Я пытаюсь строго ввести свойство объекта, которое было определено как интерфейс в интерфейсе. Вот мой образец
// interfaces
public interface IMyInterfaceA
{
string A { get; set; }
IMyInterfaceB B { get; set; }
}
public interface IMyInterfaceB
{
string B { get; set; }
}
// POCOs
public class pocoOneB : IMyInterfaceB
{
public B { get; set; }
public C { get; set; } // extending the poco with a non-interfaced property
}
public class pocoOneA : IMyInterfaceA
{
string A { get; set; }
pocoOneB B { get; set; } // fails, can I strongly type an interface??
}
public class pocoTwoB : IMyInterfaceB
{
public B { get; set; }
public D { get; set; } // extending the poco with a non-interfaced property
}
public class pocoTwoA : IMyInterfaceA
{
string A { get; set; }
pocoTwoB B { get; set; } // fails, can I strongly type an interface??
}
Проблема в том, что я не могу сделать
pocoOneB B { get; set; } // fails, can I strongly type an interface??
или
pocoTwoB B { get; set; } // fails, can I strongly type an interface??
несмотря на то, что они являются реализациями интерфейса, компилятор говорит, что я неправильно реализовал IMyInterfaceA ни в одном из этих документов. Я понимаю ошибку, однако я хотел бы знать, если есть способ строго ввести свойство, которое имеет интерфейс?
Одним из способов решения этой проблемы является то, что интерфейс IMyInterfaceA вообще не определяет свойства интерфейса IMyInterfaceB и не использует его в poco, однако я пытаюсь обеспечить реализацию этого свойства с помощью интерфейсов.
Основная причина, по которой мне нужно строго указывать свойства poco, заключается в том, что я использую JSON для стерилизации по проводам.
Спасибо за любые рекомендации.