Есть ли что-то неправильное в использовании неявного оператора, подобного следующему:
//linqpad c# program example
void Main()
{
var testObject = new MyClass<int>() { Value = 1 };
var add = 10 + testObject; //implicit conversion to int here
add.Dump(); // 11
}
class MyClass<T>
{
public T Value { get; set; }
public static implicit operator T (MyClass<T> myClassToConvert)
{
return myClassToConvert.Value;
}
}
Я думал, что таким образом могу рассматривать экземпляр объекта как тип значения, но, видя, что я никогда не видел такого примера, я подумал, что, возможно, есть причина не делать что-то подобное что кто-то может указать?
В моем фактическом коде я думал сделать это как часть уровня абстракции данных, чтобы я мог возвращать объекты с информацией, описывающей базовые данные, но позволять логическому коду обрабатывать его как тип значения, когда все, что ему нужно знать о является значением, и в то же время сохраняйте все это красиво и безопасно с помощью дженериков.