Расширение кода C # с отдельной сборкой - PullRequest
2 голосов
/ 03 апреля 2009

У меня есть некоторые дополнительные функции, которые мне нужно добавить, включая добавление нового свойства к объекту и расширение методов в другом классе, который обрабатывает этот объект. Я имею дело с исходным кодом продукта (в C # 2.0), который мы используем, и который я действительно не хочу изменять, я просто хочу расширить его.

В идеале я бы хотел иметь отдельную сборку, чтобы было понятно, что это наш код. Кажется, что частичные классы и делегаты могут быть подходящим способом, но я не уверен, возможно ли это сделать. Кто-нибудь делал что-то подобное? или знаете какие-нибудь хорошие статьи?

Ответы [ 4 ]

3 голосов
/ 03 апреля 2009

Как сказал hfcs101.

Посмотрите, можете ли вы расширить класс, учитывая некоторые существующие шаблоны проектирования ОО.

Взгляните на:

Посмотрите, сможете ли вы найти шаблон, который точно соответствует вашей проблеме. Декоратор выглядит как лучший кандидат.

3 голосов
/ 03 апреля 2009

Ознакомьтесь с шаблоном Декоратор . Это именно то, что вы ищете. Вы можете наследовать существующие классы и расширять их с помощью любой дополнительной логики. Существует также шаблон Proxy , если вы хотите скрыть некоторые базовые функции.

0 голосов
/ 03 апреля 2009

Можете ли вы наследовать от класса или это запечатано? Наследование - это ОО способ расширения существующего класса ...

0 голосов
/ 03 апреля 2009

Ну, вам придется изменить исходные классы, чтобы они также были "частичными", и вам нужно убедиться, что пространство имен во второй сборке совпадает с пространством имен в первой, и что обе сборки являются ссылками в проекте, который использует сборки. Оттуда вы можете свободно распространяться по своей воле.

...