Я знаю, что функция не существует в С#, но PHP недавно добавил функцию под названием Traits, которую я считал немного глупым сначала, пока я не начал об этом думать.
Скажем, у меня есть базовый класс под названием Client
. Client
имеет одно свойство, называемое Name
.
Теперь я разрабатываю повторно используемое приложение, которое будет использоваться многими разными клиентами. Все клиенты согласны с тем, что клиент должен иметь имя, следовательно, он находится в базовом классе.
Теперь клиент А приходит и говорит, что ему также нужно отслеживать клиентский вес. Заказчику B не нужен вес, но он хочет отслеживать высоту. Клиент C хочет отслеживать как вес, так и высоту.
С чертами мы можем сделать черты характера Weight и Height:
class ClientA extends Client use TClientWeight
class ClientB extends Client use TClientHeight
class ClientC extends Client use TClientWeight, TClientHeight
Теперь я могу удовлетворить все потребности моих клиентов, не добавляя лишнего пуха в класс. Если мой клиент вернется позже и говорит: "О, мне очень нравится эта функция, могу ли я ее тоже?", Я просто обновляю определение класса, чтобы добавить дополнительный признак.
Как бы вы это сделали в С#?
Интерфейсы здесь не работают, потому что мне нужны конкретные определения для свойств и любых связанных методов, и я не хочу их повторно реализовывать для каждой версии класса.
( "Клиент", я имею в виду буквального человека, который нанял меня как разработчика, тогда как "клиент" я имею в виду класс программирования, у каждого из моих клиентов есть клиенты, которым они хотят записать информацию)/p >