예제 #1
0
        /// <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);
                }
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
 /// <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)
 {
 }
예제 #5
0
 protected override void AddSharedCharacterCasingFormattingRules(CharacterFormattingRulesManager characterCasingRulesManager)
 {
     base.AddSharedCharacterCasingFormattingRules(characterCasingRulesManager);
     this.AddSharedCharacterCasingFormattingRulesCalled = true;
 }