2010-07-23 2 views
0

Я работаю над приложением планирования событий для контактов в телефонной книге. Избежать все public virtual и protected вещи, мой Contact класс выглядит следующим образом:Любое сопоставление типов с разными типами идентификаторов

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

Клиент попросил меня обрабатывать как свою собственную телефонную книгу и один мое приложение. Поэтому я решил извлечь интерфейс IContact с Contact и добавить еще один класс InternalContact (это имя отстой, я знаю), реализуя тот же интерфейс. Проблема заключается в том, что db клиента использует назначенную строку в качестве первичного ключа, поэтому тип идентификатора Contact '' и тип идентификатора InternalContact будут разными. Возможно ли сопоставить свойство Invitation.Contact, используя сопоставление типа <any>, даже разные типы идентификаторов?

Спасибо заранее, Джулио

ответ

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

Generic? Умм ... звучит интересно. ;-) Но это возможно? Что мне следует записывать в файл сопоставления? Любая ссылка на любой пример об этой технике? Благодарю. – petrux

+0

Да, это возможно. Вот ссылка на введение: http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx – spinon

+0

Кажется, что вы не получили «ядро» моего вопроса: Я знаю, что такое дженерики, я не знаю, как реализовать полиморфное сопоставление с NHibernate, где идентификаторы объектов имеют разные типы. Или, может быть, я что-то упустил? – petrux

Смежные вопросы