protected override void GeneratingProperty(TypeBuilder declaringType)
 {
     foreach (var interfaceType in Interfaces)
     {
         foreach (var property in interfaceType.GetTypeInfo().DeclaredProperties)
         {
             if (AspectValidator.Validate(property))
             {
                 new ProxyPropertyGenerator(declaringType, property, interfaceType, ParentType, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, true).Build();
             }
             else
             {
                 new NonProxyPropertyGenerator(declaringType, property, interfaceType, ParentType, serviceInstanceFieldBuilder, true).Build();
             }
         }
     }
 }
 protected override void GeneratingProperty(TypeBuilder declaringType)
 {
     for (var i = 0; i < Interfaces.Length; i++)
     {
         foreach (var property in Interfaces[i].GetProperties())
         {
             if (AspectValidator.Validate(property))
             {
                 new ProxyPropertyGenerator(declaringType, property, Interfaces[i], _parentType, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, i != 0).Build();
             }
             else
             {
                 new NonProxyPropertyGenerator(declaringType, property, Interfaces[i], _parentType, serviceInstanceFieldBuilder, i != 0).Build();
             }
         }
     }
 }
예제 #3
0
 protected override void GeneratingMethod(TypeBuilder declaringType)
 {
     for (var i = 0; i < Interfaces.Length; i++)
     {
         foreach (var method in Interfaces[i].GetTypeInfo().DeclaredMethods)
         {
             if (method.IsPropertyBinding())
             {
                 continue;
             }
             if (!AspectValidator.Validate(method))
             {
                 new NonProxyMethodGenerator(declaringType, parentType, method, serviceInstanceFieldBuilder, i != 0).Build();
                 continue;
             }
             new ProxyMethodGenerator(declaringType, Interfaces[i], parentType, method, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, i != 0).Build();
         }
     }
 }
 protected override void GeneratingMethod(TypeBuilder declaringType)
 {
     foreach (var interfaceType in Interfaces)
     {
         foreach (var method in interfaceType.GetTypeInfo().DeclaredMethods)
         {
             if (method.IsPropertyBinding())
             {
                 continue;
             }
             if (!AspectValidator.Validate(method))
             {
                 new NonProxyMethodGenerator(declaringType, ParentType, method, serviceInstanceFieldBuilder, true).Build();
                 continue;
             }
             new ProxyMethodGenerator(declaringType, interfaceType, ParentType, method, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, true).Build();
         }
     }
 }
예제 #5
0
        protected override void GeneratingMethod(TypeBuilder declaringType)
        {
            foreach (var method in ServiceType.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
            {
                if (method.IsPropertyBinding())
                {
                    continue;
                }
                if (AspectValidator.Validate(method))
                {
                    new ProxyMethodGenerator(declaringType, ServiceType, ParentType, method, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, false).Build();
                    continue;
                }
                if (method.IsAccessibility())
                {
                    new NonProxyMethodGenerator(declaringType, ParentType, method, serviceInstanceFieldBuilder, false).Build();
                }
            }

            foreach (var @interface in Interfaces)
            {
                foreach (var method in @interface.GetMethods())
                {
                    if (method.IsPropertyBinding())
                    {
                        continue;
                    }
                    if (!AspectValidator.Validate(method))
                    {
                        new NonProxyMethodGenerator(declaringType, ParentType, method, serviceInstanceFieldBuilder, true).Build();
                        continue;
                    }
                    new ProxyMethodGenerator(declaringType, @interface, ParentType, method, serviceInstanceFieldBuilder, serviceProviderFieldBuilder, true).Build();
                }
            }
        }
예제 #6
0
 internal static bool IsAccessibility(this PropertyInfo property)
 {
     if (property == null)
     {
         throw new ArgumentNullException(nameof(property));
     }
     return((property.CanRead && AspectValidator.IsAccessibility(property.GetMethod)) || (property.CanWrite && AspectValidator.IsAccessibility(property.GetMethod)));
 }