2009-12-08 87 views
0

我有2個對象項目和許可證。它們都從對象實體(抽象類)繼承。如何爲通用列表創建靈活的擴展方法?

現在我有一個擴展方法「GetNewId」,它包含獲取實體列表中下一個ID的邏輯。

我已經將此方法定義爲擴展方法,但問題是List(它也是實體列表)和List沒有看到此方法。

我想這個問題會出現在任何包含從同一個基類繼承的對象的通用列表中。

有沒有解決這個問題的方法?

編輯:在C#

+1

你在說什麼編程語言? – Avi 2009-12-08 11:29:31

回答

3

什麼類/接口是你GetNewId()方法的擴展工作?

如果你把它的IEnumerable<T>的延伸 - 其中T是限制從您的Entity基類派生的 - 你應該能夠使用擴展方法上的任何集合一樣包含基於Entity對象類:

public static GetNewId<T>(this IEnumerable<T> sequence) where T : Entity { 
    // your implementation of GetNewId here 
} 

Cast方法(從System.Linq)也定義在IEnumerable<T>(但在任何類型T,沒有限制),因此您可以在您的licenses實例上使用它。

+0

你的例子包含'Tedu.LicenseWebsite.Core.Model.Entity'。你知道'using'語句和命名空間......? – peSHIr 2009-12-10 13:24:27