Я пытаюсь преобразовать в float анонимный объект класса с плавающим неявным конвертером. Я не уверен, правильно ли объясню. Вот пример:Неявное преобразование типа анонимного объекта
У меня есть следующий класс:
public class MyFloat
{
public float Value { get; set; }
public MyFloat(float val)
{
Value = val;
}
public static implicit operator MyFloat(float v)
{
return new MyFloat(v);
}
public static implicit operator float(MyFloat d)
{
return d.Value;
}
Тогда, если я стараюсь:
object f1 = new MyFloat(5.0f);
float f2 = f1; // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
float f3 = (MyFloat)f1;
я InvalidCastException. Я предполагаю, что f1 рассматривается как объект, и он не проверен, если он является реальным типом (MyFloat), неявным для конвертера float. Есть ли способ обхода этой проблемы?
Заранее спасибо
Выполняет ли эта вторая строка? Не похоже, что это должно ... –
Также обратите внимание, что «анонимный объект» не является значимым термином. Я не знаю, что вы подразумеваете под этим вообще ... –
@MrFox Но тогда определение оператора float бессмысленно. –