public AccessorDictionaryAdaptor(Accessor accessor, Inspector parentInspector) : base(accessor, parentInspector) { this.accessor = accessor; accessor.valueChanged += (previousValue) => { if (!accessor.isDictionary) { throw new InvalidOperationException("Accessor for dictionary adaptor is not a dictionary: " + accessor); } if (accessor.value == null) { accessor.value = ConstructDictionary(); } newKeyAccessor?.Unlink(); newValueAccessor?.Unlink(); newKeyAccessor = accessor.Lambda("newKey", ConstructKey(), accessor.dictionaryKeyType); newValueAccessor = accessor.Lambda("newValue", ConstructValue(), accessor.dictionaryValueType); }; }
public NullableInspector(Accessor accessor) : base(accessor) { var underlyingType = Nullable.GetUnderlyingType(accessor.definedType); underlyingAccessor = accessor.Lambda("__underlying", accessor.value ?? Activator.CreateInstance(underlyingType), underlyingType); }