Вот фрагмент кода, который я использую, с выделением специфических для компании материалов.Как только вы загрузили сборку (я не могу вспомнить, если этот код загружает сборку для вас или нет), это сработает.
public static IMyType GetInstanceOfMyType()
{
var myTypeDescriptor = "My.Fully.NameSpaced.TypeName, My.Assembly.Name, Version=1.0.0.0, Culture=neutral"
IMyType _instance = null;
try
{
var myType = Type.GetType(myTypeDescriptor, true, true);
if (inst.GetInterface("IMyType") != null)
{
// For a constructor that takes a single parameter, that's a string
var constructorInfo = myType.GetConstructor(new Type[] { typeof(string) });
_instance = (IMyType)constructorInfo.Invoke(new object[] { "String to Pass To Constructor" });
}
else
{
// Type isn't correct, complain here.
}
}
catch (Exception ex)
{
// Log any errors here
}
return _instance;
}
«Любые ошибки»обычно это одно из:
- Тип, который вы назвали в
myTypeDescriptor
, не существует - Тип, который вы назвали в
myTypeDescriptor
, не реализует IMyType - Тип, который вы назвали в
myTypeDescriptor
, не имеет конструктора, который соответствует тому, который вы указали в вызове GetConstructor - Конструктор вызвал исключение;если это так, его можно найти в
ex.InnerException