C# 具有不同Id类型的任何类型映射

C# 具有不同Id类型的任何类型映射,c#,nhibernate,mapping,polymorphism,any,C#,Nhibernate,Mapping,Polymorphism,Any,我正在为电话簿中的联系人开发一个活动计划应用程序。避免所有公共虚拟和受保护的内容,我的联系人类看起来像: class Contact { //... Int32 Id { get; private set; } //primary key; String Name { get; private set; } //... } 一位客户让我处理他自己的电话簿和我的应用程序的电话簿。所以我想从Contact中提取一个IContact接口,并添加另一个类Interna

我正在为电话簿中的联系人开发一个活动计划应用程序。避免所有公共虚拟和受保护的内容,我的联系人类看起来像:

class Contact {
    //...
    Int32 Id { get; private set; } //primary key;
    String Name { get; private set; } 
    //...
}
一位客户让我处理他自己的电话簿和我的应用程序的电话簿。所以我想从Contact中提取一个IContact接口,并添加另一个类InternalContact,我知道,这个名称很糟糕,实现了相同的接口。问题是客户的db使用指定的字符串作为主键,因此联系人Id类型和InternalContact的Id类型将不同。是否可以使用类型映射映射邀请。联系人属性,即使Id类型不同

提前感谢,,
Giulio不确定这是否是您所要求的,但您可以这样做来创建类:

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; }
}

通用的嗯。。。听起来很有趣但这有可能吗?我应该在映射文件中写什么?有关于这种技术的任何例子的链接吗?谢谢。是的,这是可能的。这里是一个介绍的链接:你似乎没有理解我问题的“核心”:我知道泛型是什么,我不知道如何使用NHibernate实现多态映射,其中实体的Id是不同类型的。或者我错过了什么?