Так что давайте сначала создадим макет дизайна. У меня есть поле со списком с кнопкой, и у меня есть папка с плагинами.
Допустим, у меня есть плагин imageeffect.cs в папке плагинов. этот класс ДОЛЖЕН иметь такие свойства, как "title". Моя программа получает этот «заголовок» и динамически загружает поле со списком с этим заголовком. Итак, теперь моя программа распознает плагин. Теперь, когда пользователь нажимает кнопку, я хочу, чтобы некоторые данные (обработанные моей программой) передавались в плагин imageeffect.cs, где он выполняет все свои действия и возвращает мне статус.
Так резюмируем. моя программа читает каталог плагинов. загружает свойство "title" каждого плагина (определенное мной, кто бы ни создавал плагин) в поле со списком. Когда пользователь нажимает кнопку, «данные» или в данном случае изображение отправляются в плагин, и плагин действительно работает с ним. Затем он возвращает мне «Статус» или, в данном случае, картинку с любыми эффектами, которые он хотел.
3 ответа
Некоторое время назад я написал сообщение в блоге, чтобы проиллюстрировать очень простую систему плагинов. Этого может быть достаточно для ваших нужд:
http://crazorsharp.blogspot.com/2009/03/net-reflection-part-2-loading.html
Ok. Во-первых, я бы посоветовал, чтобы ваши плагины были скомпилированы .dll, а не просто .cs файлами. Однако, если вы хотите использовать только файлы .cs, сначала посмотрите здесь:
http://www.codeproject.com/KB/cs/livecodedotnet.aspx
А затем, чтобы реализовать систему плагинов, посмотрите эту статью:
http://www.codeproject.com/KB/cs/c__plugin_architecture.aspx
Надеюсь, это поможет :)
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.