Таким образом, моя компания происходит из полностью окружающая среда C#.Net, так естественно мы смотрим на Моно для мобильного развития. У нас есть очень обширная библиотека платформы окон, которая я смог держать большую часть в строевой стойке из него как Библиотека классов Android. Идея, являющаяся, что эта Библиотека классов Android будет нашей библиотекой мобильной платформы, которая может быть снова использована в будущем для MonoTouch (Не проверили, но прочитали, что проект MonoTouch может сослаться на Библиотеки классов Android пока, нет никакого Android определенный код). В библиотеке, хотя, есть много регистрирующихся заявлений, которые для окружающей среды окон только заканчивают тем, что были заявлениями следа (обернутый в таможенный класс помощника). Мы хотим сохранить регистрирующиеся заявления и на основе текущей окружающей среды (iOS или Android), просто перевести тех на родную регистрацию.
Я планировал использовать частичные объявления для входа в систему библиотеки мобильной платформы и иметь Android и iOS, определенные библиотеки содержат внедрения для тех частичных методов регистрации. Но это развалилось, когда я понял, что partials не работают между собраниями.
Таким образом, теперь я не уверен, как пойти об этом. Единственная вещь я могу думать, имея две отдельных iOS и библиотеки платформы Android и связывая те же самые файлы.
(У Xamarin мог бы быть регистрирующийся класс, который делает это, но мы все еще должны придумать образец для любых других будущих абстракций),
Любой совет ценится. Мы находимся все еще в экспериментальном/стадии планирования, таким образом, есть шанс, мы могли бы пропускать что-то, пожалуйста, сообщите нам, если это так.
Спасибо.
Edit
Lets say I have the following simple static class.
public static class TraceHelper
{
public static void WriteLine(string message)
{
//Validation and preprocessing
Trace.WriteLine(message);
}
}
И у меня есть сотни требований к этому методу в библиотеке мобильной платформы. Теперь позволяет, говорят, что я ссылаюсь на эту библиотеку в своем заявлении Android, есть ли любой способ отвергнуть внедрение TraceHelper. WriteLine (), не изменяя саму библиотеку?
Update
We ended up creating Android and iOS libraries that implemented the missing .NET functionality. Just wrap the native equivalent functionality, in the same .NET namespace and class. EX:
using Android.Util;
namespace System.Diagnostics
{
public static class Trace
{
#region Non-Public Data Members
private const string Tag = "Trace";
#endregion
public static void WriteLine(string message)
{
Log.WriteLine(LogPriority.Verbose, Tag, message);
}
}
}