public T Add(ExtensionProperty <T> property, T value) { if (!Values.TryAdd(property, value)) { throw new RedefinedPropertyException(property); } return(value); }
public T Get(ExtensionProperty <T> property) { T value; if (!Values.TryGetValue(property, out value)) { return(default(T));//throw new UndefinedPropertyException(property); } return(value); }
public static T GetOrAdd <T>( this object context, ExtensionProperty <T> property, Func <T> valueFactory) => Store(context) .GetOrAdd(property, valueFactory);
public static T Get <T>( this object context, ExtensionProperty <T> property) => Store(context) .Get(property);
public static T Add <T>( this object context, ExtensionProperty <T> property, T value) => Store(context) .Add(property, value);
public T GetOrAdd(ExtensionProperty <T> property, Func <T> valueFactory) => Values.GetOrAdd(property, p => valueFactory());