从其他目录动态导入C#类

时间:2011-02-14 04:28:10

标签: c# visual-studio class

我在一个名为“OtherClasses”的子目录中的不同目录中有一个Visual Studio C#项目和一堆.cs(C#类)。目录结构将是:

<Visual C# Directory>
      <bin>
      <obj>
      <Properties>
      <OtherClasses>
           <Package1>
           <Package2>

所以在每个Package目录中都有C#类。我的问题是:有没有办法从Visual C#目录中的主类中删除这些类?

另外我想如果用户在程序中选择Package N,那么只调用该特定包的类。我不知道是否有可能以某种方式实现这一点。

感谢。

2 个答案:

答案 0 :(得分:2)

是的,您可以为每个包创建程序集,然后根据用户选择的内容动态加载它们。您甚至可以通过使用内置的c#编译器编译源文件来在运行时动态创建这些程序集。

答案 1 :(得分:0)

Visual Studio对目录结构的关注度不高。 (.cs)文件包含在项目中并进行编译,或者它们不包含在项目中,因此不会编译。因此,无论不同文件所在的文件夹是什么,只要它们的可见性(内部或公共)允许,它们就能够相互调用。

如果您希望用户能够从不同的类集中进行选择,除了依赖源代码的目录之外,您还必须使用其他一些方法来区分。

修改
假设您将.cs文件编译为一个项目。如果要在程序运行时编译代码文件夹,那么代码的交互方式将取决于您使用的方法的具体情况。