我有2個對象項目和許可證。它們都從對象實體(抽象類)繼承。如何爲通用列表創建靈活的擴展方法?
現在我有一個擴展方法「GetNewId」,它包含獲取實體列表中下一個ID的邏輯。
我已經將此方法定義爲擴展方法,但問題是List(它也是實體列表)和List沒有看到此方法。
我想這個問題會出現在任何包含從同一個基類繼承的對象的通用列表中。
有沒有解決這個問題的方法?
編輯:在C#
我有2個對象項目和許可證。它們都從對象實體(抽象類)繼承。如何爲通用列表創建靈活的擴展方法?
現在我有一個擴展方法「GetNewId」,它包含獲取實體列表中下一個ID的邏輯。
我已經將此方法定義爲擴展方法,但問題是List(它也是實體列表)和List沒有看到此方法。
我想這個問題會出現在任何包含從同一個基類繼承的對象的通用列表中。
有沒有解決這個問題的方法?
編輯:在C#
什麼類/接口是你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
實例上使用它。
你的例子包含'Tedu.LicenseWebsite.Core.Model.Entity'。你知道'using'語句和命名空間......? – peSHIr 2009-12-10 13:24:27
你在說什麼編程語言? – Avi 2009-12-08 11:29:31