[英]Using dynamic in C# without referencing a DLL
我想在C#中使用动态与外部API(DLL)中定义的对象进行交互。 这样,我不想在控制台应用程序中引用该API。 这可行吗?
例如,我使用以下内容:
dynamic obj1 = new ObjectDefinedInAPI();
编译器一直在that
The type or namespace name 'objectDefinedInAPI' could not be found ...
任何想法?
谢谢
您可以手动加载程序集,然后在知道了程序集名称和类名的情况下创建一个类的实例。
var assembly = Assembly.LoadFrom("filepath");
var aClass = assembly.GetType("NameSpace.AClass");
dynamic instance = Activator.CreateInstance(aClass);
除了NeutronCode答案,您还可以尝试以下方法:
public interface IDynamicService {
void DoSomething();
}
public void static main() {
var assembly = Assembly.LoadFrom("filepath");
var aClass = assembly.GetType("NameSpace.AClass");
IDynamicService instance = Activator.CreateInstance(aClass) as IDynamicService;
if (instance != null) {
instance.DoSomething();
}
}
这样,您可以确保您的类型具有特定的实现。 请注意,实际的类必须继承该接口才能正常工作,因此,如果您无权访问其他dll源代码,则无济于事。 这样做的好处是您将获得Intellisense,并将始终确保动态类与应用程序良好地接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.