zoukankan      html  css  js  c++  java
  • 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个小时。所以,我不希望朋友你在以后会因为同样的问题而再次浪费我们宝贵的时间。





  • 相关阅读:
    《计算机图形学》学习笔记 0
    最全面的百度地图JavaScript离线版开发
    android 中文api
    SQL Compare数据库比较工具 完全破解+使用教程
    Android系统自带样式(android:theme)
    android studio 导入第三方库的记录
    web在线打印,打印阅览,打印维护,打印设计
    Oracle如何实现跨库查询
    WPF自适应窗体实现小结
    【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/1210206.html
Copyright © 2011-2022 走看看