У меня есть дерево наследования, которое выглядит так:
Foo
и Bar
оба имеют Id
, как определено определенным классом Id
.
Классы id
являются производными от общего базового класса.
Теперь я хотел бы написать интерфейс, который может включать как Foo
, так и Bar
,
но компилятор не позволяет этого, я должен был бы использовать BaseId
в качестве типа в Foo
и Bar
, но я бы хотел этого избежать.
public class BaseId
{
public string Id {get; set;}
}
public class FooId: BaseId
{}
public class BarId: BaseId
{}
public interface MyInterface
{
public BaseId Id {get; set; }
}
public class Foo: MyInterface
{
public FooId Id {get; set;}
}
public class Bar: MyInterface
{
public BarId Id {get; set;}
}