У меня возникла эта проблема, я использую отражение, чтобы вытащить свойства из класса, но проблема в отражении возвращает их как объект, и я не могу получить его в моем фактическом типе.
Возьмем, к примеру, если это класс:
public class Row<T>
{
public static explicit operator Row<object>(Row<T> o)
{
return new Row<object>
{
Name = o.Name,
Value = o.Value
};
}
public string Name { get; set; }
public T Value { get; set; }
}
Кастинг от одного слова Row<bool>
до Row<object>
работает:
var a = new Row<bool>
{
Name = "Foo",
Value = true
};
var b = (Row<object>)a; // Works
Но когда я пытаюсь перейти от object
к Row<object>
, он, кажется, игнорирует мой явный оператор и бросает System.InvalidCastException:
var c = (object) a; // Simulate getting from reflection
var d = (Row<object>) c; // System.InvalidCastException
Что мне не хватает?