У меня есть два интерфейса в различных проектах (эти проекты не ссылаются друг на друга), которые имеют одни и те же методы, как это:Преобразовать класс возможного интерфейса
В первом проекте мы имеем:
public interface IInterfaceA
{
IAViewModel Do();
}
public interface IAViewModel
{
int Id { get; set; }
}
public class ServiceA : IInterfaceA
{
public IBViewModel Do()
{
return null;
}
}
Во втором проекте мы имеем:
public interface IInterfaceB
{
IBViewModel Do();
}
public interface IBViewModel
{
int Id { get; set; }
}
Я могу создать экземпляр ServiceA во время выполнения, используя некоторые Отражение, со второго проекта.
Вопрос в том, как я могу преобразовать эту услугу в IInterfaceB. Я имею в виду, что хочу получить доступ к его методам, когда кто-то развивается, ссылаясь на IInterfaceB.
«Эти проекты не связаны друг с другом», вы имеете в виду, что вы загружаете типы другой сборки во время выполнения или что-то еще? – jdphenix
@SaeedHamed, если тип не реализует интерфейс, тогда вы не можете использовать интерфейс для вызова методов по типу. Не имеет значения, что тип реализует другой интерфейс с идентичным методом. – phoog
@phoog: обратите внимание, что в этом примере кода 'ServiceA' делает _not_ реализацию другого интерфейса с идентичным методом. Единственный отображаемый метод Do() возвращает экземпляр «IBViewModel», который не позволяет ему реализовывать «IInterfaceA». –