Пример #1
0
        /// <summary>
        /// Property mapper
        /// The same properties are read from the system level, the user level, and the document level configuration.
        /// User level properties can override system level properties while document level properties are specific
        /// only for a single document
        /// </summary>
        /// <param name="system"></param>
        /// <param name="user"></param>
        /// <param name="document"></param>
        private void SetAutoConfigProperties(Docx2TexAutoConfig system, Docx2TexAutoConfig user, Docx2TexAutoConfig document)
        {
            // all public instance properties
            var properties = this.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

            foreach (var prop in properties)
            {
                // properties that has the Docx2TexAutoConfigAttribute attribute
                if (prop.GetCustomAttributes(typeof(Docx2TexAutoConfigAttribute), false).Length > 0)
                {
                    var systemPropVal = prop.GetValue(system, null);
                    var userPropVal   = user != null?prop.GetValue(user, null) : null;

                    var documentPropVal = document != null?prop.GetValue(document, null) : null;

                    // if document level property is set, then it wins. If not then try user level.
                    // If no user level property found then user the system level property.
                    var resultVal = documentPropVal != null ? documentPropVal :
                                    (userPropVal != null ? userPropVal : systemPropVal);
                    prop.SetValue(this, resultVal, null);
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Constructore that does the job
 /// </summary>
 /// <param name="system"></param>
 /// <param name="user"></param>
 /// <param name="document"></param>
 protected Docx2TexAutoConfig(Docx2TexAutoConfig system, Docx2TexAutoConfig user, Docx2TexAutoConfig document)
 {
     SetAutoConfigProperties(system, user, document);
 }