none
自定义配置节的类? RRS feed

  • 问题

  • 扩展了ConfigurationSection类,写一个配置节处理类;可是语法我有点晕;

     [ConfigurationProperty("peopleProviderName", IsRequired = true)]
        public string PeopleProviderName
        {
            get { return (string)this["peopleProviderName"]; }
            set { this["peopleProviderName"] = value; }
        }
    我想问的是:
         网上查找了一下,说是索引;可是怎么没有申明呢?如:
    public int this[int index]    // Indexer declaration
    {
        // get and set accessors
    }
    其中 [ConfigurationProperty("peopleProviderName", IsRequired = true)]
    在语法上我就是不明白;它是什么东东?

    而这个: public string PeopleProviderName
        {
            get { return (string)this["peopleProviderName"]; }
            set { this["peopleProviderName"] = value; }
        }
    我很明白,只是定义了一个属性;使外部能够访问到数据;
    请各位指点!!!

    大其心,可容天下之物; 虚其心,可受天下之善;
    2009年7月15日 7:48

答案

  • 其中 [ConfigurationProperty("peopleProviderName", IsRequired = true)]
    是指这个属性是在配置节点中的属性节点 且名称为peopeProciderName 且必须包含此属性

    <mySection peopleProviderName="peopeProvider" />

    this[string] 则是调用集成的属性Properties:ConfigurationPropertyCollection this[string name]
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月15日 8:02
    版主
  • 1、public int this[int index]    // Indexer declaration
    {
        // get and set accessors
    }
    上面这个是索引器,可以把它想象成一个封装了键值对的集合,例如:
    public class Repository
    {
          public int this[int key]    // Indexer declaration
         {
              get
             {
                  return FindItemByKey(key);
             }
             set
             {
                 AddItem(key,value);
              }
         }

         private int FindItemByKey(int key);
         private void AddItem(int key, object value);//这个方法实现时,可能会有一个集合配合

    }

    用的时候就可以:
       Repository m_Repository = new Repository();
       int m_item = m_Repository[key]; //取值
       m_Repository[key] = value; //赋值
      用起来很方便。
    2、 [ConfigurationProperty("peopleProviderName", IsRequired = true)]
    这个是特性,通常由.net框架和客户程序来使用它,它的重要特点是扩展元数据,可以对类、方法、属性等成员进行信息扩展。例如在ORM中的应用。
    2009年7月15日 14:45
    版主

全部回复

  • 其中 [ConfigurationProperty("peopleProviderName", IsRequired = true)]
    是指这个属性是在配置节点中的属性节点 且名称为peopeProciderName 且必须包含此属性

    <mySection peopleProviderName="peopeProvider" />

    this[string] 则是调用集成的属性Properties:ConfigurationPropertyCollection this[string name]
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月15日 8:02
    版主
  • 1、public int this[int index]    // Indexer declaration
    {
        // get and set accessors
    }
    上面这个是索引器,可以把它想象成一个封装了键值对的集合,例如:
    public class Repository
    {
          public int this[int key]    // Indexer declaration
         {
              get
             {
                  return FindItemByKey(key);
             }
             set
             {
                 AddItem(key,value);
              }
         }

         private int FindItemByKey(int key);
         private void AddItem(int key, object value);//这个方法实现时,可能会有一个集合配合

    }

    用的时候就可以:
       Repository m_Repository = new Repository();
       int m_item = m_Repository[key]; //取值
       m_Repository[key] = value; //赋值
      用起来很方便。
    2、 [ConfigurationProperty("peopleProviderName", IsRequired = true)]
    这个是特性,通常由.net框架和客户程序来使用它,它的重要特点是扩展元数据,可以对类、方法、属性等成员进行信息扩展。例如在ORM中的应用。
    2009年7月15日 14:45
    版主