我正在开发一个组件,该组件执行向 ioc 注册的任何接口(interface)的临时方法,并且执行时刻取决于不同的触发器。它必须能够将要执行的操作保存到数据库中,因此我将方法名称、类型和参数列表(序列化为 BLOB)保存到数据库中,直到需要为止。
当触发发生时,我需要在类型的实例上执行方法。当我使用依赖注入(inject)时,我将接口(interface)名称保存到数据库中(格式为 "Namespace.IInterface, AssemblyName"
)
要在 ioc 容器上运行 Resolve<IInterface>()
方法,我需要其 Type
的实例:
Assembly assembly = System.Reflection.Assembly.Load(assemblyName);
Type service = assembly.GetType(typeName);
object instance = IOCContainer.Resolve(service);
我的问题是:
我确定包含程序集已加载到应用程序域中? (我简单地尝试使用
Type.Load(typeName)
但得到了 null) 最佳答案
typeName
包含程序集名称(类似于 MyNamespace.MyType, MyAssembly version=1.0.0.0,publicKeyToken=12345etc
),那么 Type.Load(typeName)
将获取您的类型但不为空; 关于c# - Assembly.Load 性能影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12261447/