2015-10-30 5 views
0

В принципе, я пытаюсь написать библиотеку, чтобы помочь людям с управлением сущностями для своих игр на C#, и мне было интересно, есть ли у пользователя возможность добавить функциональность (аналогично переопределению, за исключением того, что они не будут наследовать от класс) к методу без прямого изменения .dll? Я знаю, что в C++ некоторые люди используют обратные вызовы, и мне было интересно, есть ли что-то подобное в C#?Разрешить пользователю изменять метод из внешней сборки?

+5

Ну да, есть делегаты - ваш метод может принять параметр делегата. Если бы вы могли привести более конкретный пример, вам было бы легче помочь вам. –

+0

Почему вы модифицируете метод? Это нарушение S.O.L.I.D. принципы дизайна. Если класс не запечатан, вы можете использовать методы расширения. – tdbeckett

+0

@tdbeckett Я считаю, что OP ссылается на свое приложение. Конечно, кто-то мог написать метод расширения, но его приложение никогда не назовет его. –

ответ

2

Один из вариантов (вместо модификации метода) его использовать в MEF framework, чтобы позволить пользователям расширить приложение.

Управляемая расширяемость Framework или MEF - это библиотека для создания легких, расширяемых приложений. Он позволяет разработчикам приложений обнаруживать и использовать расширения без необходимости настройки. Он также позволяет разработчикам расширений легко инкапсулировать код и избегать хрупких жестких зависимостей. MEF не только позволяет использовать расширения для приложений, но и для приложений.