C# 程序集加载和后期绑定(bind)

标签 c# actionscript-3 assemblies late-binding applicationdomain

我正在阅读this关于 C# 和 .NET 的书,我正在学习很多很酷的东西。我读过作者谈论动态加载程序集并在该程序集中创建类型实例的部分。

在 AS3 中,可以做同样的事情,除了一件事:你可以要求编译器不编译一组类,而是检查类型安全。这是一个例子:

//Defined in an external library
public class A {...}


//In my application, I tell the compiler to type check A, but not compile it
var a:A = new A();
a.whatever();

在我的应用程序代码运行时,我可以动态加载包含类 A 定义的外部库,将这些定义加载到我的应用程序的 ApplicationDomain 中,一切都会正常运行。无需反射(reflection)!

这在 C# 中可能吗?

换句话说,我可以指示 C# 编译器对一堆类(比方说,在库中)进行类型检查,但将它们排除在编译之外吗?

最佳答案

我不是 100% 清楚 as3 代码在做什么 - 但听起来你想定义一个外部程序集可以实现的通用接口(interface)(在单独的 dll 中) - 并在创建时简单地转换它对象:

Type type = loadedAssembly.GetType(fullyQualifiedName);
IMyInterface obj = (IMyInterface)Activator.CreateInstance(type):

现在您可以轻松使用 obj 上定义的方法。

或者,在 C# 4.0 中,dynamic 关键字提供鸭子类型。

关于C# 程序集加载和后期绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081842/

相关文章:

.net - XML 注释——您如何(或在哪里)为您的命名空间和库创建 XML 注释?

c# - 为什么运算符 '==' 不能应用于结构和默认值(结构)?

c# - 在 C# 程序中用字符串替换流

flash - 我可以根据计时器控制补间动画速度吗?

flash - 我需要使用 flash 或 actionscript ping 网络

actionscript-3 - 在不同按钮上播放/暂停音频的 ActionScript

c# - 两个不同的程序集版本 "The located assembly' 的 list 定义与程序集引用不匹配”

.net - 在不重新构建的情况下更改程序集的 list

c# - 标签目标扩展器

c# - 如果通过回发单击复选框则保留