我有一個可以接受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 '等 –