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





  • 相关阅读:
    【jQuery】用jQuery给文本框添加只读属性【readOnly】
    解决embed标签显示在div上层【转藏】
    width:100% 和 max-width:100%; 有区别吗【转藏】
    一位资深程序员的独白
    jQuery 取值、赋值的基本方法【转藏】
    js判断手机端操作系统(Andorid/IOS)
    PhpStrom 和 wamp 配置 xdebug
    php 中 ?? 和 empty 的 区别
    phpSpreadSheet 中 使用的 一些坑
    html td 限制 高度 和 宽度
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/1210206.html
Copyright © 2011-2022 走看看