예제 #1
0
 internal void VerifyCustomAttributesOnTypeAndMembers()
 {
     if (verifiedCustomAttributesOnTypeAndMembers)
     {
         return;
     }
     verifiedCustomAttributesOnTypeAndMembers = true;
     if (_JsType.customAttributes == null)
     {
         return;
     }
     for (var i = 0; i < _JsType.customAttributes.length; i++)
     {
         var attDef  = _JsType.customAttributes[i].As <JsAttribute>();
         var attType = JsTypeHelper.GetType(attDef.typeName);
         var jsCtor  = attType.As <JsObject>()[attDef.ctorName].As <JsFunction>();
         var att     = Js.ApplyNew(jsCtor, attDef.positionalArguments);
         if (attDef.namedArguments != null)
         {
             foreach (string propName in attDef.namedArguments)
             {
                 var value = attDef.namedArguments[propName];
                 if (Js.Typeof(value) == "function")
                 {
                     value = value.As <JsFunction>().call(null);
                 }
                 att.As <JsObject>()["set_" + propName].As <JsFunction>().call(att, value);
             }
         }
         var target = GetAttributeTarget(attDef.targetType, attDef.targetMemberName);
         if (target._CustomAttributes == null)
         {
             target._CustomAttributes = new JsExtendedArray();
         }
         target._CustomAttributes.push(att);
     }
 }