如何使用Reflection.Emit添加引用

时间:2012-12-17 19:46:14

标签: c# reflection dll il

我正在编写一个在.NET框架上运行的语言的编译器。我正在尝试为import语句生成代码。基本上

import System.Drawing

应该表现得像

using System.Drawing;

在C#中。 import语句还支持以下内容:

import Foo.Bar in "foo.dll"

将导入foo.dll中的Foo.Bar类。我的问题是如何使用Reflection.Emit将这些链接到我生成的程序中?

谢谢。

1 个答案:

答案 0 :(得分:3)

您只需:使用库。意思是,您只需在发出的代码中使用foo.dll中的类型/方法。 Reflection.Emit包装器将自动添加必要的引用元数据。请注意,这意味着如果您的代码导入了一个库然后没有使用它,那么该引用将不会存在于生成的IL中。有趣的是完全 C#编译器的功能(也可能是VB编译器)。