コード例 #1
0
    public Type retnType; //todo can probably always set this to typeof(float)

    public SignatureAttribute(params Type[] signature)
    {
        signatureString = "";
        if (signature != null && signature.Length > 0)
        {
            retnType         = signature[signature.Length - 1];
            signatureString += MethodPointerUtils.FilterFloatTypeName(retnType.Name) + " Fn(";
            parameterTypes   = new Type[signature.Length - 1];
            for (int i = 0; i < parameterTypes.Length; i++)
            {
                parameterTypes[i] = signature[i];
                signatureString  += MethodPointerUtils.FilterFloatTypeName(signature[i].Name);
                if (i != parameterTypes.Length - 1)
                {
                    signatureString += ", ";
                }
            }
            signatureString += ")";
        }
    }
コード例 #2
0
 //todo probably add an attribute requirement as well to narrow search space even more
 private static void FindPublicStaticMethods()
 {
     methodSet = new List <MethodInfo>();
     for (int i = 0; i < filteredAssemblies.Count; i++)
     {
         var types = filteredAssemblies[i].GetTypes();
         for (int typeIndex = 0; typeIndex < types.Length; typeIndex++)
         {
             var methods = types[typeIndex].GetMethods(BindingFlags.Static | BindingFlags.Public);
             for (int methodIdx = 0; methodIdx < methods.Length; methodIdx++)
             {
                 MethodInfo info = methods[methodIdx];
                 if (info.GetCustomAttributes(true).Length > 0 && !info.IsDefined(typeof(ExtensionAttribute), true) && !info.IsGenericMethod && !info.IsGenericMethodDefinition)
                 {
                     pointerLookup[MethodPointerUtils.CreateSignature(info)] = CreateDelegate(info);
                 }
                 methodSet.AddRange(methods);
             }
         }
     }
 }
コード例 #3
0
 public AbstractMethodPointer(MethodInfo info)
 {
     signature = MethodPointerUtils.CreateSignature(info);
     original  = Reflector.FindDelegateWithSignature(signature);
     SetFromDelegate(original);
 }