Существует служба под названием DependencyService
, которая позволяет регистрировать несколько реализаций интерфейса и автоматически возвращает правильную реализацию в зависимости от текущей среды.
Вы определяете интерфейс в вашем общем проекте, например ::100100
public interface IPrinter
{
void Print();
}
И в каждом проекте вы создаете разные реализации. Вы также должны пометить его атрибутом [assembly(typeof(YOUR_CLASS_NAME))]
.
[assembly:Dependency(typeof(AndroidPrinter))]
namespace MyApp.Android
{
public class AndroidPrinter : IPrinter
{
public class Print()
{
}
}
}
Тогда в вашем общем проекте, во ViewModel, вы можете позвонить:
public void ViewModelFooMethod()
{
DependencyService.Get<IPrinter>().Print();
}
Подробнее об этом здесь