【发布时间】:2018-07-30 23:07:43
【问题描述】:
我有一个从 dll 动态调用方法的项目。 dll 名称在配置文件中定义。下面是调用“Run”方法的代码。
Assembly a = Assembly.LoadFile(fullpath);
Type t = a.GetType(dll_fullname);
// Run in subclass
MethodInfo mi = t.GetMethod("Run");
if (mi != null)
{
// set log file name
object result = null;
object classInstance = Activator.CreateInstance(t, null);
object[] parametersArray = new object[] { t.Name };
result = mi.Invoke(classInstance, parametersArray);
}
else
{
myEventLog.WriteEntry("Error: Invoke DLL Failed.", EventLogEntryType.Error, (int)(SharedClass.EventId.Error));
}
每个 DLL 都是一个类,它继承自同一个基类 MyTask,并重写方法 Run。现在,我们想在每个类中使用 Unity 的依赖注入。显然,我们可以在每个 DLL 中应用 Unity。但是,我有一个问题:
由于所有 DLL 都继承自同一个基类 MyTask,是否可以在调用方法“Run”时进行依赖注入?我认为我们可以在 CreateInstance 时做到这一点,传递参数进行注入。但是,不同的 DLL 可能需要注入不同的服务。所以,我被困在这里了。
以前有人遇到过这种情况吗?有什么建议吗?
谢谢
【问题讨论】:
-
你不能使用 DI。您必须重构代码才能使用 DI。你真的使用手动 DI。
-
@M.Hassan 当然可以,看看下面的答案
标签: c# .net dependency-injection