2012-03-02 2 views
0

У меня есть приложение Windows (C#, .Net 4.0). Это приложение Windows основано на плагинах. Я хотел бы передать объект из основного приложения в плагин.Как передать объект из основной формы в плагин в C#

Кто-нибудь хочет показать мне пример, пожалуйста? ,

+1

Какая система плагинов вы используете? Можете ли вы опубликовать код, чтобы показать, что у вас уже есть (может быть, пример того, как работает плагин?) Спасибо. – joshhendo

+0

мой код основан на этом http://www.codeproject.com/Articles/28949/A-Flexible-Plugin-System – Gagan

ответ

1

смешно, что вы должны спросить об этом, я сейчас работаю над чем-то подобным.

В интерфейсе, который вы определяете для плагинов, укажите метод/свойство, являющееся интерфейсом из вашего приложения, которое может использовать плагин.

Затем внутри вашего приложения реализуйте этот интерфейс.

Теперь на вашем плагине вызовите свой метод, проходящий в этом классе, который.

Теперь внутри плагина он сможет использовать методы и свойства, которые вы разработали в интерфейсе.

interface IPlugin 
{ 
    void CanBeCalledByTheApplication(IAppObject main); 
} 


interface IAppObject 
{ 
    void Alert(string msg); 
} 

Сейчас в вашей реализации плагина вы можете просто пойти

main.Alert("this is my message"); 

И в вашем приложении вы бы пойти

(IPlugin)myPlugin.CanBeCalledByTheApplication(someObject); 

Это, конечно, не полный пример, но вы должен быть в состоянии получить эту идею.

+0

Paul .. спасибо, что уделил мне время. Мне было интересно, было бы неплохо поместить мой конкретный класс в ту же сборку, что и интерфейс. таким образом, он доступен для основного приложения, а также для плагина. Это хорошая идея ? – Gagan

+0

помещает ваш интерфейс в отдельную сборку, таким образом вы можете (потенциально) распространять свой интерфейс плагина другим разработчикам без необходимости использования последней версии приложения, в котором они будут размещаться внутри. Вы также можете тестировать плагины, доказывая альтернативный механизм тестирования/mocks и т. Д. –

+0

извините за поздний ответ. это было поздно прошлой ночью. У меня все еще было что-то в голове, и я хотел его прояснить. То, что у меня может быть очень плохой идеей, но все же мне хотелось бы знать, почему это плохая идея. Идея, что у меня есть, поместить мой конкретный класс и интерфейс (который пользователи будут реализовывать для сборки плагина) в отдельной сборке и распространять его. Этот конкретный класс представляет собой всего лишь несколько свойств и имеет переопределенный метод ToString(). мне также интересно было добавить этот конкретный класс в качестве связанного файла в vs2010. Это хорошая идея? или очень плохой. Пожалуйста, дайте мне знать .. – Gagan

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