Я пишу универсальный класс-оболочку для реализации INotifyPropertyChanged
для набора свойств в другом из моих классов. Я изучал оператор преобразования implicit
, но Я немного смущен тем, как использовать его в универсальном классе. По сути, я хотел бы получить внутреннее значение без необходимости явного вызова внутреннего свойства. Поведение, которое я ищу, в основном такое, как Nullable<T>
класс/структура работает там, где, если внутреннее значение не равно null
, оно возвращает значение, заключенное во внутреннюю оболочку, напрямую. Пример ниже:
//current behavior
MyWrapperClass<int> wrapped = new MyWrapperClass();
int startCount = wrapped.Data;
//behavior I am looking to implement
int startCount = wrapped
Во втором примере выше, wrap вернет свое внутреннее значение вместо типа T вместо того, чтобы вызывать внутреннее свойство. Вот как ведет себя Nullable<T>
.
При изучении неявных преобразований оказалось, что мне нужно заранее знать тип в соответствии с этой статьей MSDN: Использование операторов преобразования
Нужно ли мне конвертировать в тип dynamic
, поскольку тип неизвестен? Пример:
public static implicit operator dynamic(MyWrapperClass w)
Или я могу выполнить неявное преобразование типа T, как показано ниже? Это помешало бы мне сделать метод статическим, который, как я заметил, используется во всех примерах кода, которые я видел, включая как неявные, так и явные операторы преобразования. Этот вариант кажется мне "неправильным", но я не смог найти здесь много информации по этому вопросу.
public implicit operator T(MyWrapperClass w)
EDIT: этот SO Question может привести к тому, что это помечен как обман, но принятый ответ - это не то, что я ищу, поскольку они говорят использовать свойство, которое я уже делаю.