получить информацию о сборке - PullRequest
5 голосов
/ 07 октября 2011

Я хочу получить информацию о сборке в моем приложении C #. Я использую следующее:

Assembly.GetCallingAssembly();

Это прекрасно работает, возвращая информацию о вызывающей сборке.

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

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

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Вместо того, чтобы иметь разумную библиотеку классов, почему бы вам не сделать так, чтобы вызывающий передавал Assembly в качестве аргумента методу? Поэтому, когда вы вызываете метод из какого-то приложения, вы передаете Assembly.GetExecutingAssembly(), и метод в библиотеке классов теперь сможет получить сборку фактического вызывающего.

0 голосов
/ 07 октября 2011

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

Но если этот API возвращает вам некоторую полезную информацию (например, хорошее подключение к вашей базе данных и т. Д.), То, возможно, ваш подход имеет некоторый смысл.Но я все же рекомендую вам изменить его:

  • Поместите этот код только в один общий проект / сборку и просто свяжите этот проект / сборку, когда вам понадобится вызвать эту функциональность.Необходимость дубликата кода для выполнения вашей работы считается запахом кода .
  • Примите объект Assembly в качестве параметра, а не пытайтесь определить текущая сборка.Это обеспечит большую гибкость в случае, если вы придумали какой-то код, который хочет получить данные для набора других сборок, и все же позволит вам пропустить текущую сборку.(Примечание: Дарин уже высказал это мнение)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...