我在用值填充对象时遇到问题。
属性之一是# check that there are no repeats
for col in ("name_1", "name_2"):
assert df[col].dropna().nunique() == df[col].dropna().shape[0]
# check that all `name_1`s have corresponding `name_2`s
assert set(df["name_1"].dropna()) == set(df["name_2"].dropna())
稍后,当我想用数据库中的数据填充模型时,我想在该属性上放置List<IFoo> foos
。
我认为,由于List<Foo>
正确实现了Foo
接口,这应该可以工作(对吗?),但是我收到一条错误消息,说我无法将IFoo
隐式转换为{{1} }
我想我正在寻找过去的东西... 谢谢您的提前帮助
答案 0 :(得分:2)
简而言之,即使每个List<Sheep>
是一个List<IAnimal>
,Sheep
也不是IAnimal
。因为List<IAnimal>
会让我.Add(new BigBadWolf())
永远不允许的List<Sheep>
。
您可以做的是通过调用List<IAnimal>
创建一个包含所有Sheep
的新 sheep.ToList<IAnimal>()
。
答案 1 :(得分:0)
给出类型IFoo和Foo:
interface IFoo
{
}
class Foo : IFoo
{
}
您可以创建List<IFoo>
,填充Foo
的实例,然后将其分配给属性/字段/变量:
private List<IFoo> foos;
void GetFoos()
{
foos = new List<IFoo> { new Foo() };
}
但是您不能将List<Foo>
分配给List<IFoo>
:
foos = new List<Foo> { new Foo() };