У меня есть компонент C #, который имеет класс, как показано ниже:
namespace SharedComponent{
class TestResult {
//several members
}
}
В другом существующем приложении C # я ссылаюсь на этот компонент, и мне нужно создать экземпляр этого же класса, но с дополнительным идентификатором, как показано ниже.
namespace ClientApplication {
class TestResult
{
//exact same members as above including methods
//actually the shared component class was created by gleaming
//that from this application!
int PersonID; //additional identifier
//not suitable to have in the shared component
}
}
В клиентском приложении есть несколько методов, которые полагаются на дополнительный идентификатор. Поэтому для меня очень заманчиво эмулировать конструктор копирования, создать этот объект и заполнить дополнительный параметр. Таким образом, я могу использовать существующие функции такими, какие они есть, с минимальными изменениями в классе.
Другим способом может быть добавление остальных деталей в качестве ссылки на реализацию на стороне клиента.
namespace ClientApplication {
class TestResult {
SharedComponent.TestResult trshared = new SharedComponent.TestResult()
//but this warrants I have my class methods to delegate
//to the sharedcomponent throughout ; example below
internal bool IsFollowUp(ClientApplication.TestResult prevTest)
{
//a similar method is being used
//where a function takes the class object as parameter
trshared.IsFollowUp(prevTest.trshared);
}
int PersonID; //additional identifier
}
}
Какой вариант лучше? Какова лучшая практика в этом отношении?
Среда: VS2008, C #, WinXP / Win7