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 淡入淡出
    (Windows窗体)循环动态绑定根节点及子节点
    C# 语音读取
    js禁用&启用某个按钮
    AWS DescribeDBInstances API 无法查询到 DBInstanceArn 参数
    Python 设置S3文件属性中元数据的Content-Encoding值
    Pyhton 批量重命名 AWS S3 中的文件
    Python 控制(SSM)AWS Systems Manager
    Python 根据AWS EC2设置的标签获取正在运行的instancesId
    python 'wb' 模式写入文件怎么输出回车
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/1210206.html
Copyright © 2011-2022 走看看