• Spring.net -- 目前不支持getter、setter的访问限定符


        如果你使用Spring.net作为你的IOC容器,那么一定要注意这个问题--Spring.net 目前不支持getter、setter的访问限定符。
        我们通常使用setter属性来进行依赖注入,如:
        public class A
        {
            
    #region B
            
    private B b;
            
    public B B
            {
                
    get { return b; }
                
    set { b = value; }
            } 
            
    #endregion
        }

        
    public class B
        {
        }
        针对上述的定义,在Spring.net中配置A类型的对象,并注入B类型对象的依赖,是可以完全正常工作的。
        但是,假设,我希望A类型的B属性只能给A的派生类访问,我们通常会为B属性的getter加上Protected限定符,就像这样:
        public class A
        {
            
    #region B
            
    private B b;
            
    public B B
            {
                
    protected get { return b; }
                
    set { b = value; }
            } 
            
    #endregion
        }

        
    public class B
        {
        }
          在这种定义下,如果仍然采用一样的spring配置,则会抛出"未将对象引用设置到对象实例"的异常 -- 非常常见的一个异常。

          当我依照这个异常提示在数以千计的组件构成的应用程序中去查找可能的bug时,那是怎样的一种痛苦--实际上我的代码和配置都没有问题,是spring.net开了一个玩笑 -- 为了搞清楚这个玩笑,我花了将近2个小时。所以,我不希望朋友你在以后会因为同样的问题而再次浪费我们宝贵的时间。





  • 相关阅读:
    oracle omf管理 and asm omf
    oracle 9i下载地址
    rac部署过程的任务列表
    oracle connect实例
    cpio.gz文件解压缩方式
    函数remove_constants
    oracle优化日记脚本
    查看oracle隐含参数
    rac笔记
    MotionEvent的getX(),getY()与getRawX(),getRawY()区别
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/1210206.html
Copyright © 2020-2023  润新知