我有一些具有公共屬性的類,但是,我不能讓它們從基類型(LINQ-to-SQL限制)派生。C#約束可以在沒有基類型的情況下使用嗎?
我想對待他們,好像他們有一個基本類型,但不通過使用反射(性能是關鍵)。
例如:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
}
public class Vehicle
{
public int Id { get; set; }
public string Label { get; set; }
}
在這種情況下,我會很高興,如果我有Id
屬性可用,不管我手裏拿的類型。
有沒有辦法在C#中,以類似於此:
public static int GetId<T>(T entity) where T // has an int property 'Id'
{
return entity.Id;
}
我想我可以用dynamic
,但是,我正在尋找一種方法來限制在編譯時代碼從沒有Id
屬性的對象使用此方法。
這些生成的類是什麼?如果是這樣,它們應該以'public partial class Blah ...'的形式生成,這將允許您創建額外的'partial class'文件,這將使您能夠利用提供定義接口的答案。例如,我在使用存儲庫模式時使用了與EF相同的方法。 – 2013-04-04 15:02:17
只是好奇,爲什麼你正在尋找一種方法來限制在編譯時的代碼。 「動態」似乎是最好的方法呢? – 2013-04-04 15:02:54
@CongLong,他不應該選擇'動態',除非這些類是真正關閉修改。鑑於他提到Linq-to-SQL,我懷疑他有更多的選擇,而不是他意識到的。 – 2013-04-04 15:10:34