2010-07-23 71 views
0

我正在爲電話簿中的聯繫人的事件規劃應用程序。避免所有的public virtualprotected東西,我Contact類的樣子:任何類型映射與不同的Id類型

class Contact { 
    //... 
    Int32 Id { get; private set; } //primary key; 
    String Name { get; private set; } 
    //... 
} 

一位顧客問我要同時處理自己的電話本和我的應用程序的一個。所以我想從Contact中提取一個IContact接口,並添加另一個類InternalContact(我知道這個名字很糟糕),實現了相同的接口。問題在於客戶的數據庫使用分配的字符串作爲主鍵,因此Contact的Id類型和InternalContact的Id類型會有所不同。是否可以使用<any>類型映射映射Invitation.Contact屬性,甚至是Id類型是不同的?

由於提前, 朱利奧

回答

0

不知道這是否是你所要求的,但你可以做這樣的事情,以創建類:

interface IContact<T> 
{ 
    T Id { get; } 
} 

public class Contact : IContact<int> 
{ 
    public int Id { get; private set; } 
} 

public class InternalContact : IContact<string> 
{ 
    public string Id { get; private set; } 
} 
+0

通用?呃...聽起來很有趣。 ;-)但有可能嗎?我應該在映射文件中寫什麼?任何關於這種技術的例子的鏈接?謝謝。 – petrux 2010-07-23 09:18:58

+0

是的,這是可能的。這裏是一個簡介的鏈接: http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx – spinon 2010-07-23 14:58:11

+0

看來你沒有得到我的問題的'核心':我知道泛型是什麼,我不知道如何實現與NHibernate的多態映射,其中實體的Id是不同類型的。或者我錯過了什麼? – petrux 2010-07-26 07:49:39