Пиша общ клас обвивка, за да внедря INotifyPropertyChanged
за куп свойства в друг от моите класове. Правих някои проучвания относно оператора за преобразуване implicit
, но Малко съм объркан как да го използвам в общ клас. По същество бих искал да получа вътрешно обвитата стойност, без да е необходимо изрично да извиквам вътрешното свойство. Поведението, което търся, е по същество как Nullable<T>
class/struct работи, когато вътрешната стойност не е null
, тогава ще върне вътрешно обвитата стойност директно. Пример по-долу:
//current behavior
MyWrapperClass<int> wrapped = new MyWrapperClass();
int startCount = wrapped.Data;
//behavior I am looking to implement
int startCount = wrapped
Във втория пример по-горе wrapped ще върне своята вътрешно обвита стойност вместо тип T, вместо да се налага да извиква вътрешното свойство. Ето как се държи Nullable<T>
.
Когато разглеждах имплицитни преобразувания, се оказа, че трябва да знам типа предварително според тази статия в MSDN: Използване на оператори за преобразуване
Трябва ли да конвертирам в тип dynamic
, тъй като типът не е известен? Пример:
public static implicit operator dynamic(MyWrapperClass w)
Или мога да извърша имплицитно преобразуване на тип T, както се вижда по-долу? Това би ми попречило да направя метода статичен, който забелязах, че се използва във всички примерни кодове, които съм виждал, включващи както неявни, така и явни оператори за преобразуване. Тази опция ми се струва "погрешна", но тук не можах да намеря много информация по темата.
public implicit operator T(MyWrapperClass w)
РЕДАКТИРАНЕ: Този SO въпрос може да причини това да бъде етикетиран като измама, но приетият отговор не е това, което търся, тъй като те казват да използвам имота, който вече правя.