/// <summary> /// This code gets called on the first time this Object type is constructed /// </summary> void AddSharedBusinessRules() { lock (_LockObject) { var entityType = this.GetType(); if (!SharedValidationRules.RulesExistFor(entityType)) { ValidationRulesManager mgrValidation = SharedValidationRules.GetManager(entityType); if (mgrValidation.RulesLoaded) { return; } mgrValidation.SetRulesLoaded(); CharacterFormattingRulesManager mgrCharacterCasing = SharedCharacterFormattingRules.GetManager(entityType); foreach (PropertyInfo prop in entityType.GetProperties()) { foreach (BaseValidatorAttribute atr in prop.GetCustomAttributes(typeof(BaseValidatorAttribute), false)) { mgrValidation.AddRule(atr, prop.Name); } foreach (CharacterFormattingAttribute atr in prop.GetCustomAttributes(typeof(CharacterFormattingAttribute), false)) { mgrCharacterCasing.AddRule(prop.Name, atr.CharacterCasing, atr.RemoveSpace, atr.PhoneExtension); } } AddSharedBusinessValidationRules(mgrValidation); AddSharedCharacterCasingFormattingRules(mgrCharacterCasing); } } }
/// <summary> /// This code gets called on the first time this Object type is constructed /// </summary> void AddSharedBusinessRules() { lock (_LockObject) { if (!SharedValidationRules.RulesExistFor(this.GetType())) { ValidationRulesManager mgrValidation = SharedValidationRules.GetManager(this.GetType()); CharacterFormattingRulesManager mgrCharacterCasing = SharedCharacterFormattingRules.GetManager(this.GetType()); foreach (var propInfo in PclReflection.GetPropertiesInfo(this)) { foreach (var atr in propInfo.GetCustomAttributes <BaseValidatorAttribute>(false)) { mgrValidation.AddRule(atr.Create(propInfo.Name), propInfo.Name); } foreach (var atr in propInfo.GetCustomAttributes <CharacterFormattingAttribute>(false)) { mgrCharacterCasing.AddRule(propInfo.Name, atr.CharacterCasing, atr.RemoveSpace); } } AddSharedBusinessValidationRules(mgrValidation); AddSharedCharacterCasingFormattingRules(mgrCharacterCasing); } } }
CharacterFormattingRulesManager GetCharacterFormattingRulesManagerForTarget <T>(T target) where T : class { CharacterFormattingRulesManager characterFormattingRulesManager = SharedCharacterFormattingRules.GetManager(this.GetType()); if (!characterFormattingRulesManager.RulesLoaded) { lock (LockObject) { foreach (PropertyInfo prop in target.GetType().GetProperties()) { if (prop.GetCustomAttribute(typeof(CharacterFormattingAttribute), false) is CharacterFormattingAttribute characterFormattingAttribute) { characterFormattingRulesManager.AddRule(characterFormattingAttribute, prop.Name); } } } characterFormattingRulesManager.SetRulesLoaded(); } return(characterFormattingRulesManager); }
/// <summary> /// Override this method in your business class to be notified when you need to set up SHARED character casing rules. This method is only used by the sub-class and not consumers of the sub-class. /// To add shared character case formatting to deriving class properties, override this method in deriving classes and add the rules to the CharacterCasingRulesManager. /// This method will only be called once; the first time the deriving class is created. /// </summary> /// <param name="characterCasingRulesManager">The character casing rules manager.</param> protected virtual void AddSharedCharacterCasingFormattingRules(CharacterFormattingRulesManager characterCasingRulesManager) { }
protected override void AddSharedCharacterCasingFormattingRules(CharacterFormattingRulesManager characterCasingRulesManager) { base.AddSharedCharacterCasingFormattingRules(characterCasingRulesManager); this.AddSharedCharacterCasingFormattingRulesCalled = true; }