Может быть, я тупой, но ...
У меня есть:
public interface IRequest
{
IList<IRequestDetail> Details { get; set; }
// stuff
}
public interface IRequestDetail
{
// stuff
}
У меня тогда есть:
public class MyRequest : IRequest
{
IList<MyRequestDetail> Details {get; set; }
// stuff
}
public class MyRequestDetail : IRequestDetail
{
// stuff
}
Это не работает.
C # разозлился на меня, потому что MyRequest не реализует интерфейс из-за отсутствия IList из IRequestDetail.
Теперь, если я изменил его так, чтобы Details был IList для IRequestDetail, мне пришлось бы привести его к MyRequestDetail везде в коде, где я использую неинтерфейсный член (у меня есть несколько запросов, которые разделяют общие вещи, но затем специализируются). 1013 *
Я вроде понимаю, почему это неправильно, но не полностью!