我有一个有趣的问题。我需要动态包装静态类。即返回一个非静态实例给我的调用者。例如:
public object CreateInstance(string className) {
Type t = assembly.GetType(className);
if (IsStatic(t)) {
return CreateStaticWrapper(t);
} else {
return Activator.CreateInstance(t);
}
}
所以我需要的是关于如何实现的指针CreateStaticWrapper
。
注意:很遗憾,我不能使用动态对象。
那么我的选择是什么?我不是那么热衷于学习 IL 生成?如果 IL 生成(Reflection.Emit,或者现在有其他方法吗?)是要走的路,有没有人有指针?
编辑:重要的是要注意我可以返回代表字典。所以我可以使用Delegate.CreateDelegate
它,但我似乎无法弄清楚如何处理重载方法和通用方法。
Edit2:另一个选择是使用 Emit 将一个空的构造函数注入到类型中,再次使用指针吗?这甚至可以在标记为静态的类型上实现吗?静态关键字是否进入 IL?
Edit3:对于一些上下文,我将其传递给 javascript 环境,请参阅: 我的项目。所以我希望能够(在 JavaScript 中):
var fileHelper = .create('System.IO.File');
if (fileHelper.Exists(fileName)) { fileHelper.Delete(fileName); }
谢谢大家。