Example #1
0
        private static Attribute ConvertToRule(XmlNhvmRuleConverterArgs rule)
        {
            NhvmRule ruleRule = (NhvmRule)rule.schemaRule;

            string attribute = ruleRule.attribute;
            AssemblyQualifiedTypeName fullClassName =
                TypeNameParser.Parse(attribute, rule.defaultNameSpace, rule.defaultAssembly);

            System.Type type = ReflectHelper.ClassForFullName(fullClassName.ToString());
#if NETFX
            log.Info("The type found for ruleRule = " + type.FullName);
#else
            Log.Info("The type found for ruleRule = {0}", type.FullName);
#endif
            Attribute thisattribute = (Attribute)Activator.CreateInstance(type);
#if NETFX
            log.Info("Attribute found = " + thisattribute);
#else
            Log.Info("Attribute found = {0}", thisattribute);
#endif

            var tr = thisattribute as ITagableRule;
            if (tr != null)
            {
                AssignTagsFromString(tr, ruleRule.tags);
            }

            if (ruleRule.param == null)
            {
                return(thisattribute);                                    //eager return
            }
            foreach (NhvmParam parameter in ruleRule.param)
            {
                PropertyInfo propInfo = type.GetProperty(parameter.name);
                if (propInfo != null)
                {
#if NETFX
                    log.Info("propInfo value = " + parameter.value);
#else
                    Log.Info("propInfo value = {0}", parameter.value);
#endif
                    object value = propInfo.PropertyType != typeof(string)
                                                                        ? Convert.ChangeType(parameter.value, propInfo.PropertyType)
                                                                        : parameter.value;
                    propInfo.SetValue(thisattribute, value, null);
                }
                else
                {
                    throw new InvalidPropertyNameException(
                              string.Format("The custom attribute '{0}' don't have the property '{1}'; Check for typo.", type.FullName, parameter.name), parameter.name,
                              type);
                }
            }

            return(thisattribute);
        }
Example #2
0
        static Value InvokeGetType(Thread evalThread, AssemblyQualifiedTypeName name)
        {
            var sysType = evalThread.AppDomain.Compilation.FindType(KnownTypeCode.Type);
            var getType = sysType.GetMethods(m => m.Name == "GetType" && m.Parameters.Count == 2).FirstOrDefault();

            return(InvokeMethod(evalThread, getType, null, new[] { NewString(evalThread, name.ToString()), CreateValue(evalThread, false) }));
        }
Example #3
0
		static Value InvokeGetType(Thread evalThread, AssemblyQualifiedTypeName name)
		{
			var sysType = evalThread.AppDomain.Compilation.FindType(KnownTypeCode.Type);
			var getType = sysType.GetMethods(m => m.Name == "GetType" && m.Parameters.Count == 2).FirstOrDefault();
			return InvokeMethod(evalThread, getType, null, new[] { NewString(evalThread, name.ToString()), CreateValue(evalThread, false) });
		}
        public void ToStringEscaped()
        {
            AssemblyQualifiedTypeName tn = new AssemblyQualifiedTypeName("Escaped\\,Type", "Escaped\\,Assembly");

            Assert.AreEqual(tn.Type + ", " + tn.Assembly, tn.ToString());
        }
        public void ToStringComplex()
        {
            AssemblyQualifiedTypeName tn = new AssemblyQualifiedTypeName("MyType", "MyAssembly");

            Assert.AreEqual("MyType, MyAssembly", tn.ToString());
        }
        public void ToStringSimple()
        {
            AssemblyQualifiedTypeName tn = new AssemblyQualifiedTypeName("MyType", null);

            Assert.AreEqual("MyType", tn.ToString());
        }