如何在“使用”定义部分中将动态类打开为静态

本文关键字:动态 静态 使用 定义部 | 更新日期: 2023-09-27 17:56:38

所以我想像这样打开动态类:

using System ...
...
using System.Windows.Forms;
using core = new myNamespace.myClass(); // Sure it doesn't work but how to realize it ?

当我这样做时

使用 myNamespace.myClass();我不能使用它,因为 myClass 是动态的,但我希望它在此类创建和处理时创建。我想访问 myClass 的变量/方法,就像从这个类一样,比如

核心。X 必须与 X 相同。

可能我只是想要类似界面的东西,但作为一个类。

好的,我将尝试准确解释我想要得到什么:

例如,我有部分类,每个类都有 2 个文件!第二个文件的内容相同。如何对所有分部类使用一个文件?像一个模块,但没有前缀!

所以我知道我的英语并不完美,我会添加一个代码示例:

public partial class FRIIB : Form
{
  private string x = username;
}
public partial class FRIIB : Form
{
  private string username = "hi";
}
public partial class LOLO : Form
{
  private string x = username;
  // I don't want to create another file with "username" definition 
}

我正在考虑使用Mixin...它看起来正是我想要得到的。

如何在“使用”定义部分中将动态类打开为静态

using语句需要在单个方法的上下文/范围内。

如果无法将作用域限制为方法,则需要手动释放它,通常在对象上实现IDisposable,并在Dispose()中执行释放。有时(但很少)您可能还希望终结器在收集时捕获未处理的对象 - 但强调:非常罕见。

没有用于释放静态字段的内置机制 - 您必须添加静态Release()方法(或类似方法)以在干净的应用程序退出期间调用。

还有一个using别名,它看起来有点像你的代码,但做一些完全不相关的事情(它允许你为单个类型使用替代名称,无论是为了方便还是为了避免歧义;它仅限于单个文件)。

如果我正确理解了你的问题,那么你正在寻找这样的东西:

object obj = Activator.CreateInstance(Assembly.LoadFrom("My Assembly").GetType("myNamespace.myClass", true));
core = obj as myNamespace.myClass;

第一条语句动态创建自定义类型的实例。第二条语句将创建的对象强制转换为自定义类型。

此代码片段仅显示正流,当然,我建议在您的代码中也注意负流。

我希望这有帮助:-)

阅读:

使用指令(C# 参考)

使用语句(C# 参考)