Mam ten problem, używam refleksji do przeciągania właściwości z klasy, ale problem jest odbiciem, który zwraca je jako obiekt i nie mogę go wprowadzić do mojego rzeczywistego typu.Nieprawidłowe generatory wyjątków rzutowania
Weźmy na przykład, jeśli jest to klasa:
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; }
}
Odlewy rzec Row<bool>
do Row<object>
prace:
var a = new Row<bool>
{
Name = "Foo",
Value = true
};
var b = (Row<object>)a; // Works
Ale gdy próbuję iść z object
do Row<object>
wydaje zignoruj mojego operatora jawnego i wyślij wyjątek System.InvalidCastException:
var c = (object) a; // Simulate getting from reflection
var d = (Row<object>) c; // System.InvalidCastException
Czego mi brakuje?
zrób to jak ten var c = (Wiersz
Nie jestem pewien, czego się spodziewasz - w twoim przykładzie nie ma operatora 'Wiersz
Może to być spowodowane tym, że jawny operator oczekuje 'Wiersza', podczas gdy ty nadajesz mu "obiekt". –