/// <summary> /// Fügt eine neue Strategie für die spezielle Eigenschaft hinzu. /// </summary> public TStrategy Add <TResult, TStrategy>(Expression <Func <T, TResult> > method, TStrategy strategy) where TStrategy : DataCreationStrategy <TResult> { if (strategy == null) { throw new ArgumentNullException(nameof(strategy)); } string name = ExpressionsExtensions.GetMemberInfoName(method); var propertyInfo = typeof(T).GetProperty(name); if (propertyInfo.PropertyType.Equals(typeof(TResult))) { if (Strategies.ContainsKey(name)) { Strategies.Remove(name); } strategy.Initialize(propertyInfo); Strategies.Add(name, new StrategyInfo { Strategy = strategy, Name = name }); return(strategy); } return(null); }
public TStrategy Then <TResult, TStrategy>(Expression <Func <T, TResult> > method, TStrategy strategy) where TStrategy : DataCreationStrategy <TResult> { string name = ExpressionsExtensions.GetMemberInfoName(method); var propertyInfo = typeof(T).GetProperty(name); if (propertyInfo.PropertyType.Equals(typeof(TResult))) { if (strategy != null) { strategy.Initialize(propertyInfo); info.Name = name; info.Strategy = strategy; dictionary.Add("_" + name, info); return(strategy); } else if (dictionary.ContainsKey(name)) { dictionary.Remove(name); } } return(null); }
/// <summary> /// Creates a violation /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="propertyAccessMethod"></param> /// <param name="violationType"></param> /// <returns></returns> public DataCreationStrategy <T> CreateViolation <TResult>(Expression <Func <T, TResult> > propertyAccessMethod, ViolationType violationType) { var memberName = ExpressionsExtensions.GetMemberInfoName(propertyAccessMethod); if (String.IsNullOrWhiteSpace(memberName)) { throw new ArgumentException(nameof(propertyAccessMethod)); } return(CreateViolation(memberName, violationType)); }
public TStrategy Add <TResult, TStrategy>(Expression <Func <T, TResult> > method) where TStrategy : DataCreationStrategy <TResult>, new() { string name = ExpressionsExtensions.GetMemberInfoName(method); var propertyInfo = typeof(T).GetProperty(name); if (propertyInfo.PropertyType.Equals(typeof(TResult))) { TStrategy strategy = new TStrategy(); strategy.Initialize(propertyInfo); info.Name = name; info.Strategy = strategy; dictionary.Add("_" + name, info); return(strategy); } return(null); }
public StringValidity Add(Expression <Func <T, string> > method) { return(Add <StringValidity>(ExpressionsExtensions.GetMemberInfoName(method))); }
public BooleanValidity Add(Expression <Func <T, bool> > method) { return(Add <BooleanValidity>(ExpressionsExtensions.GetMemberInfoName(method))); }
public DoubleValidity Add(Expression <Func <T, double> > method) { return(Add <DoubleValidity>(ExpressionsExtensions.GetMemberInfoName(method))); }
public IntegerValidity Add(Expression <Func <T, int> > method) { return(Add <IntegerValidity>(ExpressionsExtensions.GetMemberInfoName(method))); }