我有一个可以接受List<IMyInterface>
作为参数在一个构造使用界面的列表参数<T>
public class MyClass
{
public MyClass(List<IMyInterface> elements)
{
}
}
,拥有,因为这
public partial class MyEntity
{
public string id {get;set;}
. . .
}
产生的EF实体扩展一个类这个类实现了IMyInterfase
(Bool MyEntity
及其扩展名在同一个命名空间中)
public partial class MyEntity : IMyInterfase
{
public bool MyInterfaseImplementation {get;set;}
. . .
}
而在我的视图模型构造
var x = from a in db.MyEntity
select a;
如果我尝试使用a.ToList()
作为参数,我类扔参数无效错误
我期待这样的: 如果MyEntity
工具IMyInterfase
,那么MyClass
必须接受它作为参数。
我对这种方法有错吗?什么是正确的方法来做到这一点?
如果使用接口,为什么不使用'ICollection'?您应该始终查找最少指定的方法参数。 'IEnumerable'也可以工作,但你可能不希望'MyClass'接收未执行的查询。 –
@GertArnold Tks为您提供帮助,我建立了一个接受''List''的类,其中T可以是任何实现SpecificInterface的类。真的不明白你的消化。 –
这只是一般性评论,并非真正适用于解决方案(为此,请参阅下面的评论)。我的意思是'List'比'ICollection'更具指定性。如果'ICollection'足够好,为什么不使用它呢?它给构造者的呼叫者更自由,例如通过'HashSet'的'Array '等 –