如何在“使用”定义部分中将静态类打开为静态?
问题描述:
所以我想打开动态类是类似的东西:如何在“使用”定义部分中将静态类打开为静态?
using System ...
...
using System.Windows.Forms;
using core = new myNamespace.myClass(); // Sure it doesn't work but how to realize it ?
当我做
使用myNamespace.myClass();我不能使用它,因为myClass是动态的,但我希望它创建,因为这个类创建并正在处理它。我想有机会varables/MyClass的方法aslike从这个类,像
core.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;
第一条语句动态创建您的自定义类型的一个实例。第二个语句将创建的对象转换为您的自定义类型。
此代码片段仅显示正向流程,当然,我也推荐在您的代码中负责流向。
我希望这有助于:-)
你的代码内使用using语句混乱的(这保证的Dispose()被调用)?因为你试图做的事情是不可能的。 – SirViver 2011-05-16 10:54:56
你想创建myClass的别名吗? – 2011-05-16 10:54:57
你希望实现什么?你为什么想这样做? – 2011-05-16 10:55:21