zoukankan      html  css  js  c++  java
  • aspectcore 简单解析

    .netcore 下aspectcore  的使用

    动态代理:

    static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
    
                using (IProxyGenerator proxyGenerator = new ProxyGeneratorBuilder().Build())
                {
                    var p = proxyGenerator.CreateClassProxy<Test>();
                    p.myPrint();
    
                    var p3 = proxyGenerator.CreateClassProxy<Test2>();
                    p3.myPrint();
                }
                Console.Read();
                Console.WriteLine("Hello World!********************");
            }

    红色的p,类型是  AspectCore.DynamicGeneratedqgb.Test

    这个类型是动态产生的。

    ProxyGeneratorUtils类下的方法  private Type CreateClassProxyInternal(string name, Type serviceType, Type implType, Type[] additionalInterfaces, IAspectValidator aspectValidator)

    private Type CreateClassProxyInternal(string name, Type serviceType, Type implType, Type[] additionalInterfaces, IAspectValidator aspectValidator)
            {
                var interfaces = additionalInterfaces.Distinct().ToArray();
    
            //这个类可以被编译成一个 Type. 下面能动态生成构造函数,和方法。
    var typeDesc = TypeBuilderUtils.DefineType(_moduleBuilder, name, serviceType, implType, interfaces); typeDesc.Properties[typeof(IAspectValidator).Name] = aspectValidator; //define constructor ConstructorBuilderUtils.DefineClassProxyConstructors(serviceType, implType, typeDesc); //define methods MethodBuilderUtils.DefineClassProxyMethods(serviceType, implType, additionalInterfaces, typeDesc); PropertyBuilderUtils.DefineClassProxyProperties(serviceType, implType, additionalInterfaces, typeDesc); return typeDesc.Compile(); }
    气功波(18037675651)
  • 相关阅读:
    最小二乘拟合(scipy实现)
    接口实例
    类的继承:员工和老板
    设计模式(Design Patterns)
    创建类
    面向对象1
    java随机数:彩票抽奖 + 验证码
    判断字符串中字符出现的次数+去除空格
    输出二维数组所有元素的和
    输出 一维数组中最大的数+数组遍历
  • 原文地址:https://www.cnblogs.com/qgbo/p/11389996.html
Copyright © 2011-2022 走看看