【发布时间】:2016-02-08 01:06:11
【问题描述】:
我正在使用Reflection.Emit 和TypeBuilder 在运行时创建一个新类型。我的设置是这样的:
public class MyClass {
public object MyField = CreateInstanceOfNewType();
public MyClass() {}
}
问题在于MyClass.MyField 是用object 类型声明的,因此当可转换类型分配给MyClass.MyField 时,不会调用新类型存在的隐式转换运算符。有没有办法将字段的类型设置为新创建的类型,使其行为类似于典型情况下的行为?
【问题讨论】:
-
该类型会实现已知接口吗?如果是这样,只需将 object 分配给类型为该接口的变量。
-
隐式转换运算符不能在接口中定义。这确实绕过了赋值时的类型更改,但不允许使用隐式强制转换。
-
请描述您的实际业务问题,而不是针对未知问题的这种不可行的解决方案。你是对的 - C# des 不允许这个解决方案工作。这并不意味着您的问题无法解决。
标签: c# reflection casting reflection.emit typebuilder