Возможно ли отлировать Lazy<T
>экземпляр как Lazy<object>
, когда все, что у меня есть, есть ссылка на объект? Это возвращает нуль:Lazy <T> как Lazy <object> возможно?
var result = obj as Lazy<object>;
Это имеет смысл для меня. Он должен быть нулевым, потому что его не Lazy<object>
. Но есть ли другой способ опросить, чтобы узнать, что на самом деле есть или наложить на объект? Мне на самом деле все равно, что Т на самом деле в этом случае. Мне просто нужна ссылка .Value
.
Некоторые фон
Так что это действительно раритет вопрос. Он может применяться к любому объекту, определяющему общий (то есть List<T>
). Но вот конкретный случай:
Я придерживаюсь провайдера Lazy<T>
в кеше. Я знаю, что такое T, когда я его вставляю, и я знаю, что T в нормальном использовании, когда я вытаскиваю его. Однако в одном случае, когда я управляю кешем, я не знаю, что такое T, и на самом деле я не хочу взаимодействовать с ним, кроме как отправить его значение в сериализатор. Я просто обеспокоен тем, что у меня отсутствует какой-то очевидный способ достичь этого, не создавая способ отслеживать его раньше времени или менять кучу сигнатур/вызовов методов.
ДА! Это то, что мой мозг продолжал говорить мне, но я продолжал думать, сталкиваясь с теми же проблемами, поэтому я не пытался. Ясно, что я не понимал механику под динамикой, поэтому спасибо за эту информацию. – user2245759