Как можно использовать Reflection для определения способов приведения объекта из метода?
Пример:
Учитывая этот тип, который можно неявно преобразовать и назначить как 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;
}
Есть ли способ использовать Reflection (или любой другой процесс), чтобы определить, как «obj» был приведен/назначен изнутри CastAndassignObj()
?
Я хотел бы получить коллекцию, содержащую типы int
и string
для приведенного выше примера.
Большое спасибо-