Ejemplo n.º 1
0
		public void CheckBadReplace ()
		{
			Variables variables = new Variables ();
			variables.Add ("Key1", "Value1");
            var exception = Assert.Throws<ObfuscarException>(() => { variables.Replace("$(Unreplaceable)"); });
            Assert.AreEqual("Unable to replace variable:  Unreplaceable", exception.Message);
		}
Ejemplo n.º 2
0
		public void CheckReplace ()
		{
			Variables variables = new Variables ();
			variables.Add ("Key1", "Value1");

			string result = variables.Replace ("This: $(Key1) got replaced.");
			Assert.AreEqual ("This: Value1 got replaced.", result);
		}
Ejemplo n.º 3
0
        public void CheckReplace()
        {
            Obfuscar.Variables variables = new Obfuscar.Variables();
            variables.Add("Key1", "Value1");

            string result = variables.Replace("This: $(Key1) got replaced.");

            Assert.AreEqual("This: Value1 got replaced.", result);
        }
Ejemplo n.º 4
0
        public void CheckBadReplace()
        {
            Obfuscar.Variables variables = new Obfuscar.Variables();
            variables.Add("Key1", "Value1");

            TestUtils.AssertThrows(delegate {
                variables.Replace("$(Unreplaceable)");
            }, typeof(ObfuscarException),
                                   "Unable", "replace", "Unreplaceable");
        }
Ejemplo n.º 5
0
		public Settings(Variables vars)
		{
			inPath = vars.GetValue("InPath", ".");
			outPath = vars.GetValue("OutPath", ".");
			markedOnly = XmlConvert.ToBoolean(vars.GetValue("MarkedOnly", "false"));

			renameProperties = XmlConvert.ToBoolean(vars.GetValue("RenameProperties", "true"));
			renameEvents = XmlConvert.ToBoolean(vars.GetValue("RenameEvents", "true"));
			reuseNames = XmlConvert.ToBoolean(vars.GetValue("ReuseNames", "true"));
			hideStrings = XmlConvert.ToBoolean(vars.GetValue("HideStrings", "true"));

			xmlMapping = XmlConvert.ToBoolean(vars.GetValue("XmlMapping", "false"));

			keyFile = vars.GetValue("KeyFile", null);
		}
Ejemplo n.º 6
0
        internal Settings( Variables vars )
        {
            inPath = vars.GetValue( "InPath", "." );
            outPath = vars.GetValue( "OutPath", "." );
            logFilePath = vars.GetValue( "LogFile", "" );
            markedOnly = XmlConvert.ToBoolean( vars.GetValue( "MarkedOnly", "false" ) );

            renameProperties = XmlConvert.ToBoolean( vars.GetValue( "RenameProperties", "true" ) );
            renameEvents = XmlConvert.ToBoolean( vars.GetValue( "RenameEvents", "true" ) );
            reuseNames = XmlConvert.ToBoolean( vars.GetValue( "ReuseNames", "true" ) );
            useUnicodeNames = XmlConvert.ToBoolean(vars.GetValue("UseUnicodeNames", "false"));
            hideStrings = XmlConvert.ToBoolean(vars.GetValue("HideStrings", "true"));

            xmlMapping = XmlConvert.ToBoolean( vars.GetValue( "XmlMapping", "false" ) );
            renegerateDebugInfo = XmlConvert.ToBoolean(vars.GetValue("RegenerateDebugInfo", "false") );
        }
Ejemplo n.º 7
0
        public Settings(Variables vars)
        {
            inPath = vars.GetValue ("InPath", ".");
            outPath = vars.GetValue ("OutPath", ".");
            logFilePath = vars.GetValue ("LogFile", "");
            markedOnly = XmlConvert.ToBoolean (vars.GetValue ("MarkedOnly", "false"));

            renameProperties = XmlConvert.ToBoolean (vars.GetValue ("RenameProperties", "true"));
            renameEvents = XmlConvert.ToBoolean (vars.GetValue ("RenameEvents", "true"));
            keepPublicApi = XmlConvert.ToBoolean (vars.GetValue ("KeepPublicApi", "false"));
            hidePrivateApi = XmlConvert.ToBoolean (vars.GetValue ("HidePrivateApi", "false"));
            reuseNames = XmlConvert.ToBoolean (vars.GetValue ("ReuseNames", "true"));
            useUnicodeNames = XmlConvert.ToBoolean (vars.GetValue ("UseUnicodeNames", "false"));
            useKoreanNames = XmlConvert.ToBoolean (vars.GetValue ("UseKoreanNames", "false"));
            hideStrings = XmlConvert.ToBoolean (vars.GetValue ("HideStrings", "true"));
            optimize = XmlConvert.ToBoolean (vars.GetValue ("OptimizeMethods", "true"));
            supressIldasm = XmlConvert.ToBoolean (vars.GetValue ("SupressIldasm", "true"));

            xmlMapping = XmlConvert.ToBoolean (vars.GetValue ("XmlMapping", "false"));
            renegerateDebugInfo = XmlConvert.ToBoolean (vars.GetValue ("RegenerateDebugInfo", "false"));
            keyFile = vars.GetValue ("KeyFile", null);
        }
Ejemplo n.º 8
0
 public static string GetAttribute( XmlReader reader, string name, Variables vars )
 {
     return vars.Replace( GetAttribute( reader, name ) );
 }
Ejemplo n.º 9
0
        public static AssemblyInfo FromXml(Project project, XmlReader reader, Variables vars)
        {
            Debug.Assert (reader.NodeType == XmlNodeType.Element && reader.Name == "Module");

            AssemblyInfo info = new AssemblyInfo (project);

            // pull out the file attribute, but don't process anything empty
            string val = Helper.GetAttribute (reader, "file", vars);
            if (val.Length > 0) {
                info.LoadAssembly (val);

                if (AssemblyIsSigned (info.Definition) && project.Settings.KeyFile == null)
                    throw new ObfuscarException ("Obfuscating a signed assembly would result in an invalid assembly:  " + info.Name + "; use the KeyFile property to set a key to use");
            } else
                throw new InvalidOperationException ("Need valid file attribute.");

            string isExcluded = Helper.GetAttribute (reader, "Exclude", vars);
            if ((isExcluded.Length > 0) && (isExcluded.ToLowerInvariant () == "true")) {
                info.Exclude = true;
            }

            if (!reader.IsEmptyElement) {
                while (reader.Read ()) {
                    if (reader.NodeType == XmlNodeType.Element) {
                        string name = Helper.GetAttribute (reader, "name", vars);

                        string rxStr = Helper.GetAttribute (reader, "rx");
                        Regex rx = null;
                        if (!string.IsNullOrEmpty (rxStr)) {
                            rx = new Regex (rxStr);
                        }

                        string isStaticStr = Helper.GetAttribute (reader, "static", vars);
                        bool? isStatic = null;
                        if (!string.IsNullOrEmpty (isStaticStr)) {
                            isStatic = XmlConvert.ToBoolean (isStaticStr);
                        }

                        string isSerializableStr = Helper.GetAttribute (reader, "serializable", vars);
                        bool? isSerializable = null;
                        if (!string.IsNullOrEmpty (isSerializableStr)) {
                            isSerializable = XmlConvert.ToBoolean (isSerializableStr);
                        }

                        string attrib = Helper.GetAttribute (reader, "attrib", vars);
                        string inherits = Helper.GetAttribute (reader, "typeinherits", vars);
                        string type = Helper.GetAttribute (reader, "type", vars);
                        string typeattrib = Helper.GetAttribute (reader, "typeattrib", vars);

                        switch (reader.Name) {
                        case "SkipNamespace":
                            if (rx != null) {
                                info.skipNamespaces.Add (new NamespaceTester (rx));
                            } else {
                                info.skipNamespaces.Add (new NamespaceTester (name));
                            }
                            break;
                        case "ForceNamespace":
                            if (rx != null) {
                                info.forceNamespaces.Add (new NamespaceTester (rx));
                            } else {
                                info.forceNamespaces.Add (new NamespaceTester (name));
                            }
                            break;
                        case "SkipType":
                            TypeAffectFlags skipFlags = TypeAffectFlags.SkipNone;

                            val = Helper.GetAttribute (reader, "skipMethods", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                skipFlags |= TypeAffectFlags.AffectMethod;

                            val = Helper.GetAttribute (reader, "skipStringHiding", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                skipFlags |= TypeAffectFlags.AffectString;

                            val = Helper.GetAttribute (reader, "skipFields", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                skipFlags |= TypeAffectFlags.AffectField;

                            val = Helper.GetAttribute (reader, "skipProperties", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                skipFlags |= TypeAffectFlags.AffectProperty;

                            val = Helper.GetAttribute (reader, "skipEvents", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                skipFlags |= TypeAffectFlags.AffectEvent;

                            if (rx != null) {
                                info.skipTypes.Add (new TypeTester (rx, skipFlags, attrib, inherits, isStatic, isSerializable));
                            } else {
                                info.skipTypes.Add (new TypeTester (name, skipFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            break;
                        case "ForceType":
                            TypeAffectFlags forceFlags = TypeAffectFlags.SkipNone;

                            val = Helper.GetAttribute (reader, "forceMethods", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                forceFlags |= TypeAffectFlags.AffectMethod;

                            val = Helper.GetAttribute (reader, "forceStringHiding", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                forceFlags |= TypeAffectFlags.AffectString;

                            val = Helper.GetAttribute (reader, "forceFields", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                forceFlags |= TypeAffectFlags.AffectField;

                            val = Helper.GetAttribute (reader, "forceProperties", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                forceFlags |= TypeAffectFlags.AffectProperty;

                            val = Helper.GetAttribute (reader, "forceEvents", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean (val))
                                forceFlags |= TypeAffectFlags.AffectEvent;

                            if (rx != null) {
                                info.forceTypes.Add (new TypeTester (rx, forceFlags, attrib, inherits, isStatic, isSerializable));
                            } else {
                                info.forceTypes.Add (new TypeTester (name, forceFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            break;
                        case "SkipMethod":
                            if (rx != null) {
                                info.skipMethods.Add (new MethodTester (rx, type, attrib, typeattrib, inherits, isStatic));
                            } else {
                                info.skipMethods.Add (new MethodTester (name, type, attrib, typeattrib, inherits, isStatic));
                            }
                            break;
                        case "ForceMethod":
                            if (rx != null) {
                                info.forceMethods.Add (new MethodTester (rx, type, attrib, typeattrib, inherits, isStatic));
                            } else {
                                info.forceMethods.Add (new MethodTester (name, type, attrib, typeattrib, inherits, isStatic));
                            }
                            break;
                        case "SkipStringHiding":
                            if (rx != null) {
                                info.skipStringHiding.Add (new MethodTester (rx, type, attrib, typeattrib));
                            } else {
                                info.skipStringHiding.Add (new MethodTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "ForceStringHiding":
                            if (rx != null) {
                                info.forceStringHiding.Add (new MethodTester (rx, type, attrib, typeattrib));
                            } else {
                                info.forceStringHiding.Add (new MethodTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "SkipField":
                            string decorator = Helper.GetAttribute (reader, "decorator", vars);

                            if (rx != null) {
                                info.skipFields.Add (new FieldTester (rx, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable));
                            } else {
                                info.skipFields.Add (new FieldTester (name, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable));
                            }
                            break;
                        case "ForceField":
                            string decorator1 = Helper.GetAttribute (reader, "decorator", vars);

                            if (rx != null) {
                                info.forceFields.Add (new FieldTester (rx, type, attrib, typeattrib, inherits, decorator1, isStatic, isSerializable));
                            } else {
                                info.forceFields.Add (new FieldTester (name, type, attrib, typeattrib, inherits, decorator1, isStatic, isSerializable));
                            }
                            break;
                        case "SkipProperty":
                            if (rx != null) {
                                info.skipProperties.Add (new PropertyTester (rx, type, attrib, typeattrib));
                            } else {
                                info.skipProperties.Add (new PropertyTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "ForceProperty":
                            if (rx != null) {
                                info.forceProperties.Add (new PropertyTester (rx, type, attrib, typeattrib));
                            } else {
                                info.forceProperties.Add (new PropertyTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "SkipEvent":
                            if (rx != null) {
                                info.skipEvents.Add (new EventTester (rx, type, attrib, typeattrib));
                            } else {
                                info.skipEvents.Add (new EventTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "ForceEvent":
                            if (rx != null) {
                                info.forceEvents.Add (new EventTester (rx, type, attrib, typeattrib));
                            } else {
                                info.forceEvents.Add (new EventTester (name, type, attrib, typeattrib));
                            }
                            break;
                        case "SkipEnums":
                            var skipEnumsValue = Helper.GetAttribute (reader, "value");
                            info.skipEnums = skipEnumsValue.Length > 0 && XmlConvert.ToBoolean (skipEnumsValue);
                            break;
                        }
                    } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "Module") {
                        // hit end of module element...stop reading
                        break;
                    }
                }
            }

            return info;
        }
Ejemplo n.º 10
0
        internal static AssemblyInfo FromXml( Project project, XmlReader reader, Variables vars )
        {
            Debug.Assert( reader.NodeType == XmlNodeType.Element && reader.Name == "Module" );

            AssemblyInfo info = new AssemblyInfo( project );

            // pull out the file attribute, but don't process anything empty
            string val = Helper.GetAttribute( reader, "file", vars );
            if ( val.Length > 0 )
            {
                info.LoadAssembly( val );

                if ( AssemblyIsSigned( info.Definition ) && project.KeyValue == null )
                    throw new ApplicationException( "Obfuscating a signed assembly would result in an invalid assembly:  " + info.Name +"; use the KeyValue property to set a key to use" );
            }
            else
                throw new InvalidOperationException( "Need valid file attribute." );

            string isExcluded = Helper.GetAttribute(reader, "Exclude", vars);
            if ((isExcluded.Length > 0) && (isExcluded.ToLowerInvariant() == "true"))
            {
                info.Exclude = true;
            }

            if ( !reader.IsEmptyElement )
            {
                while ( reader.Read( ) )
                {
                    if ( reader.NodeType == XmlNodeType.Element )
                    {
                        switch ( reader.Name )
                        {
                            case "SkipNamespace":
                                {
                                    val = Helper.GetAttribute(reader, "name", vars);
                                    if (val.Length > 0)
                                        info.skipNamespaces.Add(new NamespaceTester(val));
                                }
                                break;
                            case "SkipType":
                                {
                                    val = Helper.GetAttribute(reader, "name", vars);
                                    if (val.Length > 0)
                                    {
                                        string typeName = val;

                                        TypeSkipFlags skipFlags = TypeSkipFlags.SkipNone;

                                        val = Helper.GetAttribute(reader, "skipMethods", vars);
                                        if ( val.Length > 0 && XmlConvert.ToBoolean( val ) )
                                            skipFlags |= TypeSkipFlags.SkipMethod;

                                        val = Helper.GetAttribute(reader, "skipStringHiding", vars);
                                        if (val.Length > 0 && XmlConvert.ToBoolean(val))
                                            skipFlags |= TypeSkipFlags.SkipStringHiding;

                                        val = Helper.GetAttribute(reader, "skipFields", vars);
                                        if ( val.Length > 0 && XmlConvert.ToBoolean( val ) )
                                            skipFlags |= TypeSkipFlags.SkipField;

                                        val = Helper.GetAttribute(reader, "skipProperties", vars);
                                        if ( val.Length > 0 && XmlConvert.ToBoolean( val ) )
                                            skipFlags |= TypeSkipFlags.SkipProperty;

                                        val = Helper.GetAttribute(reader, "skipEvents", vars);
                                        if ( val.Length > 0 && XmlConvert.ToBoolean( val ) )
                                            skipFlags |= TypeSkipFlags.SkipEvent;

                                        info.skipTypes.Add(new TypeTester(typeName, skipFlags));
                                    }
                                }
                                break;
                            case "SkipMethod":
                                {
                                    val = Helper.GetAttribute( reader, "name", vars );
                                    string type = Helper.GetAttribute( reader, "type", vars );
                                    string attrib = Helper.GetAttribute( reader, "attrib", vars );

                                    if ( val.Length > 0 )
                                        info.skipMethods.Add( new MethodTester( val, type, attrib ) );
                                    else
                                    {
                                        val = Helper.GetAttribute( reader, "rx" );
                                        if ( val.Length > 0 )
                                            info.skipMethods.Add( new MethodTester( new Regex( val ), type, attrib ) );
                                    }
                                }
                                break;
                            case "SkipStringHiding":
                                {
                                    val = Helper.GetAttribute(reader, "name", vars);
                                    string type = Helper.GetAttribute(reader, "type", vars);
                                    string attrib = Helper.GetAttribute(reader, "attrib", vars);

                                    if (val.Length > 0)
                                        info.skipStringHiding.Add(new MethodTester(val, type, attrib));
                                    else
                                    {
                                        val = Helper.GetAttribute(reader, "rx");
                                        if (val.Length > 0)
                                            info.skipStringHiding.Add(new MethodTester(new Regex(val), type, attrib));
                                    }
                                }
                                break;
                            case "SkipField":
                                {
                                    val = Helper.GetAttribute( reader, "name", vars );
                                    string type = Helper.GetAttribute( reader, "type", vars );
                                    string attrib = Helper.GetAttribute( reader, "attrib", vars );

                                    if ( val.Length > 0 )
                                        info.skipFields.Add( new FieldTester( val, type, attrib ) );
                                    else
                                    {
                                        val = Helper.GetAttribute( reader, "rx" );
                                        if ( val.Length > 0 )
                                            info.skipFields.Add( new FieldTester( new Regex( val ), type, attrib ) );
                                    }
                                }
                                break;
                            case "SkipProperty":
                                {
                                    val = Helper.GetAttribute( reader, "name", vars );
                                    string type = Helper.GetAttribute( reader, "type", vars );
                                    string attrib = Helper.GetAttribute( reader, "attrib", vars );

                                    if ( val.Length > 0 )
                                        info.skipProperties.Add( new PropertyTester( val, type, attrib ) );
                                    else
                                    {
                                        val = Helper.GetAttribute( reader, "rx" );
                                        if ( val.Length > 0 )
                                            info.skipProperties.Add( new PropertyTester( new Regex( val ), type, attrib ) );
                                    }
                                }
                                break;
                            case "SkipEvent":
                                {
                                    val = Helper.GetAttribute( reader, "name", vars );
                                    string type = Helper.GetAttribute( reader, "type", vars );
                                    string attrib = Helper.GetAttribute( reader, "attrib", vars );

                                    if ( val.Length > 0 )
                                        info.skipEvents.Add( new EventTester( val, type, attrib ) );
                                    else
                                    {
                                        val = Helper.GetAttribute( reader, "rx" );
                                        if ( val.Length > 0 )
                                            info.skipEvents.Add( new EventTester( new Regex( val ), type, attrib ) );
                                    }
                                }
                                break;
                        }
                    }
                    else if ( reader.NodeType == XmlNodeType.EndElement && reader.Name == "Module" )
                    {
                        // hit end of module element...stop reading
                        break;
                    }
                }
            }

            return info;
        }
Ejemplo n.º 11
0
        public static AssemblyInfo FromXml(Project project, XmlReader reader, Variables vars)
        {
            Debug.Assert(reader.NodeType == XmlNodeType.Element && reader.Name == "Module");

            AssemblyInfo info = new AssemblyInfo(project);

            // pull out the file attribute, but don't process anything empty
            string val = Helper.GetAttribute(reader, "file", vars);

            if (val.Length > 0)
            {
                info.LoadAssembly(val);

                if (AssemblyIsSigned(info.Definition) && project.Settings.KeyFile == null)
                {
                    throw new ObfuscarException("Obfuscating a signed assembly would result in an invalid assembly:  " + info.Name + "; use the KeyFile property to set a key to use");
                }
            }
            else
            {
                throw new InvalidOperationException("Need valid file attribute.");
            }

            string isExcluded = Helper.GetAttribute(reader, "Exclude", vars);

            if ((isExcluded.Length > 0) && (isExcluded.ToLowerInvariant() == "true"))
            {
                info.Exclude = true;
            }

            if (!reader.IsEmptyElement)
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        string name = Helper.GetAttribute(reader, "name", vars);

                        string rxStr = Helper.GetAttribute(reader, "rx");
                        Regex  rx    = null;
                        if (!string.IsNullOrEmpty(rxStr))
                        {
                            rx = new Regex(rxStr);
                        }

                        string isStaticStr = Helper.GetAttribute(reader, "static", vars);
                        bool?  isStatic    = null;
                        if (!string.IsNullOrEmpty(isStaticStr))
                        {
                            isStatic = XmlConvert.ToBoolean(isStaticStr);
                        }

                        string isSerializableStr = Helper.GetAttribute(reader, "serializable", vars);
                        bool?  isSerializable    = null;
                        if (!string.IsNullOrEmpty(isSerializableStr))
                        {
                            isSerializable = XmlConvert.ToBoolean(isSerializableStr);
                        }

                        string attrib     = Helper.GetAttribute(reader, "attrib", vars);
                        string inherits   = Helper.GetAttribute(reader, "typeinherits", vars);
                        string type       = Helper.GetAttribute(reader, "type", vars);
                        string typeattrib = Helper.GetAttribute(reader, "typeattrib", vars);

                        switch (reader.Name)
                        {
                        case "SkipNamespace":
                            if (rx != null)
                            {
                                info.skipNamespaces.Add(new NamespaceTester(rx));
                            }
                            else
                            {
                                info.skipNamespaces.Add(new NamespaceTester(name));
                            }
                            break;

                        case "ForceNamespace":
                            if (rx != null)
                            {
                                info.forceNamespaces.Add(new NamespaceTester(rx));
                            }
                            else
                            {
                                info.forceNamespaces.Add(new NamespaceTester(name));
                            }
                            break;

                        case "SkipType":
                            TypeAffectFlags skipFlags = TypeAffectFlags.SkipNone;

                            val = Helper.GetAttribute(reader, "skipMethods", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                skipFlags |= TypeAffectFlags.AffectMethod;
                            }

                            val = Helper.GetAttribute(reader, "skipStringHiding", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                skipFlags |= TypeAffectFlags.AffectString;
                            }

                            val = Helper.GetAttribute(reader, "skipFields", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                skipFlags |= TypeAffectFlags.AffectField;
                            }

                            val = Helper.GetAttribute(reader, "skipProperties", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                skipFlags |= TypeAffectFlags.AffectProperty;
                            }

                            val = Helper.GetAttribute(reader, "skipEvents", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                skipFlags |= TypeAffectFlags.AffectEvent;
                            }

                            if (rx != null)
                            {
                                info.skipTypes.Add(new TypeTester(rx, skipFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            else
                            {
                                info.skipTypes.Add(new TypeTester(name, skipFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            break;

                        case "ForceType":
                            TypeAffectFlags forceFlags = TypeAffectFlags.SkipNone;

                            val = Helper.GetAttribute(reader, "forceMethods", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                forceFlags |= TypeAffectFlags.AffectMethod;
                            }

                            val = Helper.GetAttribute(reader, "forceStringHiding", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                forceFlags |= TypeAffectFlags.AffectString;
                            }

                            val = Helper.GetAttribute(reader, "forceFields", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                forceFlags |= TypeAffectFlags.AffectField;
                            }

                            val = Helper.GetAttribute(reader, "forceProperties", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                forceFlags |= TypeAffectFlags.AffectProperty;
                            }

                            val = Helper.GetAttribute(reader, "forceEvents", vars);
                            if (val.Length > 0 && XmlConvert.ToBoolean(val))
                            {
                                forceFlags |= TypeAffectFlags.AffectEvent;
                            }

                            if (rx != null)
                            {
                                info.forceTypes.Add(new TypeTester(rx, forceFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            else
                            {
                                info.forceTypes.Add(new TypeTester(name, forceFlags, attrib, inherits, isStatic, isSerializable));
                            }
                            break;

                        case "SkipMethod":
                            if (rx != null)
                            {
                                info.skipMethods.Add(new MethodTester(rx, type, attrib, typeattrib, inherits, isStatic));
                            }
                            else
                            {
                                info.skipMethods.Add(new MethodTester(name, type, attrib, typeattrib, inherits, isStatic));
                            }
                            break;

                        case "ForceMethod":
                            if (rx != null)
                            {
                                info.forceMethods.Add(new MethodTester(rx, type, attrib, typeattrib, inherits, isStatic));
                            }
                            else
                            {
                                info.forceMethods.Add(new MethodTester(name, type, attrib, typeattrib, inherits, isStatic));
                            }
                            break;

                        case "SkipStringHiding":
                            if (rx != null)
                            {
                                info.skipStringHiding.Add(new MethodTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.skipStringHiding.Add(new MethodTester(name, type, attrib, typeattrib));
                            }
                            break;

                        case "ForceStringHiding":
                            if (rx != null)
                            {
                                info.forceStringHiding.Add(new MethodTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.forceStringHiding.Add(new MethodTester(name, type, attrib, typeattrib));
                            }
                            break;

                        case "SkipField":
                            string decorator = Helper.GetAttribute(reader, "decorator", vars);

                            if (rx != null)
                            {
                                info.skipFields.Add(new FieldTester(rx, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable));
                            }
                            else
                            {
                                info.skipFields.Add(new FieldTester(name, type, attrib, typeattrib, inherits, decorator, isStatic, isSerializable));
                            }
                            break;

                        case "ForceField":
                            string decorator1 = Helper.GetAttribute(reader, "decorator", vars);

                            if (rx != null)
                            {
                                info.forceFields.Add(new FieldTester(rx, type, attrib, typeattrib, inherits, decorator1, isStatic, isSerializable));
                            }
                            else
                            {
                                info.forceFields.Add(new FieldTester(name, type, attrib, typeattrib, inherits, decorator1, isStatic, isSerializable));
                            }
                            break;

                        case "SkipProperty":
                            if (rx != null)
                            {
                                info.skipProperties.Add(new PropertyTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.skipProperties.Add(new PropertyTester(name, type, attrib, typeattrib));
                            }
                            break;

                        case "ForceProperty":
                            if (rx != null)
                            {
                                info.forceProperties.Add(new PropertyTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.forceProperties.Add(new PropertyTester(name, type, attrib, typeattrib));
                            }
                            break;

                        case "SkipEvent":
                            if (rx != null)
                            {
                                info.skipEvents.Add(new EventTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.skipEvents.Add(new EventTester(name, type, attrib, typeattrib));
                            }
                            break;

                        case "ForceEvent":
                            if (rx != null)
                            {
                                info.forceEvents.Add(new EventTester(rx, type, attrib, typeattrib));
                            }
                            else
                            {
                                info.forceEvents.Add(new EventTester(name, type, attrib, typeattrib));
                            }
                            break;
                        }
                    }
                    else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "Module")
                    {
                        // hit end of module element...stop reading
                        break;
                    }
                }
            }

            return(info);
        }
Ejemplo n.º 12
0
 public static string GetAttribute(XmlReader reader, string name, Variables vars)
 {
     return(vars.Replace(GetAttribute(reader, name)));
 }