У меня есть класс, который я пытаюсь создать с помощью Assembly и Activator, этот класс реализует интерфейс, однако, когда я запускаю экземпляр класса через условный который проверяет, что класс реализует его, я становлюсь ложным. В чем может быть проблема?Класс, созданный из DLL, кажется, не реализует интерфейс правильно
Мой код, где я проверяю для реализации:
string className = MyClass;
Type type = null;
Assembly assembly = Assembly.LoadFile("@C:\\MyDLL", new Evidence(AppDomain.CurrentDomain.Evidence));
type = assembly.GetType(className);
object instance = Activator.CreateInstance(type);
//never makes it past this conditional
if (!(instance is MyInterface)
{
//It always endsup in here, when it shouldn't.
System.Writeline("ERROR");
}
else{
//This is what needs to happen
}
код для класса MyClass, который выходит за рамки всего этого, и в MyDLL
public class MyClass: MyInterface
{
//Contents irrelevent to my problem
}
Я в недоумении о том, почему это не проходит условное. Могу ли я создать экземпляр класса неправильно? Также следует отметить, что я большой новичок, когда речь идет об использовании Assembly/Activator и использовании интерфейсов.
Вы проверяете, что ваш экземпляр * не * ваш интерфейс? –
Извините за то, насколько расплывчатым это кажется. Я добавил дополнительный код к сообщению. –
Вы очень плохо убили этот струнный литерал. Это либо '@" C: \ MyDLL "или' "C: \\ MyDLL" '. –