【发布时间】:2014-12-06 19:08:34
【问题描述】:
我对实现具有其他接口类型列表的接口的类有疑问。尝试在下面创建一个简单的示例。
public interface IPerson
{
IEnumerable<IPersonEntry> Persons { get; set; }
DateTime LastUpdated { get; set; }
}
public class PersonType1 : IPerson
{
public IEnumerable<IPersonEntry> Persons { get; set; }
public DateTime LastUpdated { get; set; }
public PersonType1()
{
Persons = new List<NormalEntry>();
}
}
public class PersonType2 : IPerson
{
IEnumerable<IPersonEntry> Persons { get; set; }
public DateTime LastUpdated { get; set; }
public PersonType2()
{
Persons = new List<SomethingDifferent>();
}
}
public interface IPersonEntry
{
string Name { get; set; }
}
public class NormalEntry : IPersonEntry
{
// some other props
}
public class SomethingDifferent : IPersonEntry
{
// something different
}
public class SomeOtherClass
{
public SomeMethod()
{
PersonType2 p2 = new PersonType2();
p2.Persons.Add(new SomethingDifferent{
// blah = 5;
})
}
}
但在我的 SomeOtherClass 方法中,我希望能够添加到列表中,但它仍然被视为 IEnumerable 而不是 List。所以我不能添加它。任何帮助将不胜感激。
【问题讨论】:
-
不允许将
interface中的属性定义为public