Я использую Structure Map для загрузки плагинов из дочернего каталога.Отсутствующие атрибуты для динамически загружаемого класса
Как основное приложение, так и плагин ссылаются на dll FileHelpers. У FileHelpers есть атрибуты, которые вы кладете в класс, чтобы определить, чем ограничивается запись. Они определены в моем плагине. например.
[Delimited('\t')]
public class Test {
public string name;
}
Утилита FileHelpers запускается из основного приложения, используя определения классов, предоставляемые плагинами. Если я поместил dll плагина в каталог под основным приложением, то у меня возникла проблема с библиотекой FileHelpers, жалующейся на то, что атрибут не может быть найден, однако, если он помещен рядом с основной библиотекой (той же папкой), то он отлично работает.
Я поместил некоторые дополнительные отладочные в мой код и обнаружил, что если
var type = typeof(Test);
var attributes = type.GetCustomAttributes(true);
используется и не специфическая (одна FileHelpers используется)
var attributes = type.GetCustomAttributes(typeof(DelimitedAttribute), true);
то находит пользовательские атрибуты без каких-либо проблем.
Я думал, что это, возможно, было SM, но попробовал MEF и сделал это с помощью Assembly.Load(), и то же самое происходит.
Является ли 'type' символом' Test' или предком 'Test'? –
Извините yes..test представляет тип теста – Schotime
Возможно, мне что-то не хватает, но 'Type.GetCustomAttributes (bool)' не является допустимой перегрузкой 'GetCustomAttributes' в соответствии с [документами MSDN] (http://msdn.microsoft.com/en-us/library/system.attribute.getcustomattributes.aspx). Это что-то особенное для StructureMap? –