如何在“使用”定义部分中将动态类打开为静态
本文关键字:动态 静态 使用 定义部 | 更新日期: 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# 参考)