Лучший способ выполнять функцию, только если загружена (.NET) DLL?

Я не уверен, как лучше это объяснить, поэтому, если вы не понимаете, оставляйте комментарии.

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

] Сейчас я создаю новую программу и хочу, чтобы она была как можно более легкой. Хотя я хотел бы включить свой механизм уведомлений, я не думаю, что многие люди действительно будут использовать его функции, поэтому я бы предпочел не включать его по умолчанию - просто как дополнительную загрузку.

Как мне это запрограммировать?

С помощью неуправляемых библиотек DLL и P / Invoke я могу в основном заключить все в цикл try / catch, но я не уверен насчет управляемой версии.

Пока что это лучший способ, которым я могу подумайте о том, чтобы проверить, существует ли файл DLL при запуске, а затем установить поле bool или подобное, и каждый раз, когда я хочу, чтобы уведомление запускалось, я мог бы выполнить if / проверить логическое значение и запустить ...

Я видел из окна отладки, что файлы DLL загружаются только по мере необходимости. Программа, очевидно, будет компилироваться, поскольку все компоненты будут видны проекту, но будет ли она работать на машине конечных пользователей без DLL?

Что еще более важно, есть ли лучший способ сделать это?

В идеале я бы хотел, чтобы в моем приложении ничего не было об уведомлениях, и было бы так, чтобы при загрузке файла DLL эта функция добавлялась извне. На самом деле это еще не конец света, когда несколько дополнительных байтов вызывают уведомление ("blabla"); (или подобное), но я думаю гораздо дальше, когда у меня гораздо большие намерения и просто хочу знать лучшие практики для такого рода вещей. var objB = new {foo = "foo", bar = "bar"}; Я хочу объединить их, чтобы получить: new {test = "test", ...

Допустим, у меня есть два таких анонимных объекта:

var objA = new { test = "test", blah = "blah" };
var objB = new { foo = "foo", bar = "bar" };

Я хочу объединить их, чтобы получить:

new { test = "test", blah = "blah", foo = "foo", bar = "bar" };

Я не буду знать, какие свойства есть для objA и objB во время компиляции. Я хочу, чтобы это было похоже на метод расширения jquery.

Кто-нибудь знает библиотеку или класс фреймворка .net, которые могут помочь мне в этом?

28
задан ajma 27 February 2011 в 09:00
поделиться