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(); } } } }
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(); } } }
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(); } } }
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))); }