【发布时间】:2014-01-02 17:36:54
【问题描述】:
如何使用反射来确定从方法内部转换对象的方式?
例子:
给定这种类型,它可以被隐式转换并分配为 int、float 或 string:
public class VersatileType {
public int intVal = 10;
public float floatVal = 1.5f;
public string stringVal = "words";
// implicit convertions
// ints
public static implicit operator int(VersatileType vt) {
return vt.intVal;
}
public static implicit operator VersatileType(int val) {
VersatileType vt = new VersatileType();
vt.intVal = val;
return vt;
}
// floats
public static implicit operator float(VersatileType vt) {
return vt.floatVal;
}
public static implicit operator VersatileType(float val) {
VersatileType vt = new VersatileType();
vt.floatVal = val;
return vt;
}
// strings
public static implicit operator string(VersatileType vt) {
return vt.stringVal;
}
public static implicit operator VersatileType(string val) {
VersatileType vt = new VersatileType();
vt.stringVal = val;
return vt;
}
}
以及执行一些隐式转换和分配的给定方法:
public VersatileType obj;
public void CastAndAssignObj() {
obj = 0;
string text = obj;
}
有没有办法使用反射(或任何其他过程)来确定“obj”是如何从 CastAndassignObj() 内部转换/分配的?
对于上面的示例,我希望得到一个包含 int 和 string 类型的集合。
非常感谢-
【问题讨论】:
标签: c# reflection casting implicit assign