首页 > 解决方案 > C# 程序集强制转换为类型失败

问题描述

有我的示例代码

public interface ICommonInterface
{
    Task<T> SomeMethod<T>(string params) where T : new();
}

public class ExternalAssembly : ICommonInterface
{
   public ExternalAssembly(string params) {...}
   public async Task<T> SomeMethod<T>(string params) where T : new() {...}
}

所以我正在从另一个项目加载程序集,该项目也引用了ICommonInterface. 我有以下代码,在最后一步失败

object assemblyInstance;
Assembly assembly;
assembly = Assembly.LoadFile(assemblyFile);
Type type = assembly.GetType("Namespace.ExternalAssembly");
assemblyInstance = Activator.CreateInstance(type, new[] { params });

var myClass = (assemblyInstance as ICommonInterface);

问题是它myClass是空的

以前版本的代码可以完美运行,这里是(只有界面不同)

public interface ICommonInterface
{
    Task<SomeClass> SomeMethod(string params);
}

public class ExternalAssembly : ICommonInterface
{
   public ExternalAssembly(string params) {...}
   public async Task<SomeClass> SomeMethod(string params) {...}
}

标签: c#reflection

解决方案


推荐阅读