Если вы контролируете тип, используемый как динамический, не могли бы вы вернуть кортеж вместо значения для каждого доступа к свойству?Что-то вроде ...
public class DynamicValue<T>
{
internal DynamicValue(T value, bool exists)
{
Value = value;
Exists = exists;
}
T Value { get; private set; }
bool Exists { get; private set; }
}
Возможно, наивная реализация, но если вы каждый раз создаете одну из них внутренне и возвращаете ее вместо фактического значения, вы можете проверить Exists
при каждом доступе к свойству, а затемнажмите Value
, если оно имеет значение default(T)
(и не имеет значения), если это не так.
Тем не менее, мне может не хватать некоторых знаний о том, как работает динамическая система, и это может быть нереальным.