Тест EndToEnd моего приложения включает загрузку выпущенных рук вручную.Ошибка при передаче namespaceA.objectA в namespaceA.objectA
Во время тестирования я всегда следующие нагруженный: - NUnit ShadowCopy н отладочных сборок - Postbuildeventcopy сборок релиза №
Даже если я уверен, что две копий из того же поколения сборки (версия) литье моей нагрузки отражения не срабатывает.
дать немного контекста вот некоторые псевдо-код:
private HookingHelper globalhooker;
private Tools.ISomething globalmockery;
TestfixtureSetUp(){
globalhooker = new globalhooker();
globalhooker.Loadfrom("c:\postbuildcopy.dll");
globalmockery = Mockrepository.Generate<Tools.ISomething>();
globalhooker.SetViaReflection<Tools.ISomething>("nameofsomething", globalmockery);
}
У меня есть вспомогательный класс, который использует LoadFrom, чтобы получить статический внутри сборки. Прежде чем я позвоню, я должен ввести макет.
Этот макет создается с использованием теневой копии библиотеки инструментов в отладочной версии, так как nunit создает ее.
Загруженная библиотека - это версия выпуска, которая важна для меня, так как я хочу провести тестирование как можно ближе к реальной среде.
Когда я пытаюсь внедрить с помощью отражения я должен использовать FieldInfo SetValue(...)
вызов выглядит примерно так:
public static void ReplaceFieldPublicStatic<T>(Type type, string fieldname, T obj)
{
FieldInfo field = AssemblyHelper.GetFieldInfoPublicStatic(type, fieldname);
field.SetValue((T)obj, obj);
}
Somethimes Рефлексия работы и иногда мои типы не могут быть литыми друг в друга.
Ошибка: ArgumentException Сгенерировано FieldInfo SetValue(...)
.
Когда я выполняю исключение и исследую разницу между field.FieldType != typeof(T)
, только вызов GetHashCode() дает другое значение.
Я думаю, что есть немного случайности.
Могу ли я заставить Typecast? Это даже разумно?
Есть ли что-то, что мне нужно делать во время сборки моих проектов, которые мне не хватает?
Сколько сборок такого типа? Тип определяется его сборкой –
debug/mydll.dll и relese/mydll.dll загружаются – Johannes
, почему вы загружаете оба? –