2015-07-29 4 views
0

Я создал библиотеку классов в Dotnet. Теперь я связал эту библиотеку с различными клиентами, консольной программой, сервисом, модульным тестовым проектом и веб-сайтом ASP.NET. В некоторых частях мне нужно загрузить определенные файлы (например, шаблоны Excel) с диска. В этом случае местоположение для разных проектов вызывающего абонента отличается.Определение типа проекта вызова в библиотеке класса .net

Итак, мой вопрос: что такое лучший способ узнать, какой тип проекта использует моя библиотека?

Обнаружение клиента веб-сайта легко, мне просто нужно проверить, если System.Web.HttpContext.Current не является ничем. Но как насчет обнаружения других клиентов?

+0

Вы говорите, наши общие библиотеки пытается загружать активы из разных мест, в зависимости от проекта, с которым он связан? Если да, вы должны реализовать какой-то IoC. – Krumelur

+1

Поместите расположение шаблонов/файлов в файл конфигурации приложения. Затем вы можете прочитать запись в config из своей библиотеки и не должны угадывать. – M4N

+0

Вы можете проверить имена загруженных сборок или определить тип проекта, проверив предопределенные записи в файлах web.config/app.config ('appsettings'). –

ответ

3

Даже если вам удастся обнаружить различные типы приложений сейчас, вы никогда не сможете быть уверены, будет ли эта логика работать в будущем.

Я думаю, что лучше не гадать и реализовать другое решение, например:

  1. пути использования, которые по отношению к корневой директории текущего приложения, например, с помощью AppDomain.CurrentDomain.BaseDirectory (MSDN)
  2. положил расположение файлов в конфигурационном файле приложения (в разделе appSettings) и прочитать его из библиотеки с использованием ConfigurationManager.AppSettings.Get() (MSDN)
+0

Хорошо, я положу путь в app.config. Но, возможно, мне нужен тип проекта и по другим причинам. Нет ли способа обнаружить это путем отражения? – Ulli

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

  • Нет связанных вопросов^_^