随笔 - 547  文章 - 213 评论 - 417 阅读 - 107万

Microsoft.ScalableHosting.Profile.SettingsProperty的源代码

以下是类图(有一个方法很长,只显示了部分输入参数)

 


这个文件的作用是为一些设置文件提供一些属性,从代码中可以看出,大部分方法和属性都是虚拟的,这样可以供其它类继承它。

下面对其中的几个成员作简单的分析:


1. Attributes属性

        private SettingsAttributeDictionary _Attributes;

        
public virtual SettingsAttributeDictionary Attributes
        {
            
get
            {
                
return this._Attributes;
            }
        }

这里面用到一个类SettingsAttributeDictionary,我们看看它的代码:

    using System;
    
using System.Collections;

    [Serializable]
    
public class SettingsAttributeDictionary : Hashtable
    {
        
public SettingsAttributeDictionary()
        {
        }

        
public SettingsAttributeDictionary(SettingsAttributeDictionary attributes) : base(attributes)
        {
        }

    }

从代码可以看出,SettingsAttributeDictionary类其实就是一个Hashtable。
那么Attributes属性的作用就很明显了,就是把一些属性的key-value列表。

2. DefaultValue属性

        private object _DefaultValue;

        
public virtual object DefaultValue
        {
            
get
            {
                
return this._DefaultValue;
            }
            
set
            {
                
this._DefaultValue = value;
            }
        }

这个属性是object类型的,应该是设置该类的默认值,具体用法还不是很清楚,需要研究调用它的代码才知道,等以后研究到调用该属性的代码时,这部分再补充上


3.    IsReadOnly属性

        private bool _IsReadOnly;

        
public virtual bool IsReadOnly
        {
            
get
            {
                
return this._IsReadOnly;
            }
            
set
            {
                
this._IsReadOnly = value;
            }
        }

这个属性应该是设置这个类的实例是否可读,具体用法还不是很清楚。等以后研究到调用该属性的代码时,这部分再补充上。



4. Name属性

        private string _Name;

        
public virtual string Name
        {
            
get
            {
                
return this._Name;
            }
            
set
            {
                
this._Name = value;
            }
        }

标志该类实例的名称。不再赘述


5. PropertyType属性

        private Type _PropertyType;

        
public virtual Type PropertyType
        {
            
get
            {
                
return this._PropertyType;
            }
            
set
            {
                
this._PropertyType = value;
            }
        }

这个属性让我很迷惑,不知道它到底有什么用,等以后研究到调用该属性的代码时,这部分再补充上



6. Provider属性

        private SettingsProvider _Provider;

        
public virtual SettingsProvider Provider
        {
            
get
            {
                
return this._Provider;
            }
            
set
            {
                
this._Provider = value;
            }
        }

这个属性是指定操作该类的DataProvider,我们看一下与SettingsProvider相关联的类:

                                                

在上图中,SettingProvider派生出ProfileProvider, 用来进行与Profile相关的数据库操作。ProfileProvider是一个抽象类,里面并没有操作数据库,只是定义了几个虚方法。SqlProfileProvider继承了ProfileProvider,对Sql Server进行操作。


7. SerializeAs属性

        private SettingsSerializeAs _SerializeAs;

        
public virtual SettingsSerializeAs SerializeAs
        {
            
get
            {
                
return this._SerializeAs;
            }
            
set
            {
                
this._SerializeAs = value;
            }
        }

指示该类被序列化成什么格式,有如下的选择:

    public enum SettingsSerializeAs
    {
        String,
        Xml,
        Binary,
        ProviderSpecific
    }


8. ThrowOnErrorSerializing

          private bool _ThrowOnErrorSerializing;

         
public bool ThrowOnErrorSerializing
        {
            
get
            {
                
return this._ThrowOnErrorSerializing;
            }
            
set
            {
                
this._ThrowOnErrorSerializing = value;
            }
        }

指示在序列化失败以后是否抛出错误


9. ThrowOnErrorDeserializing属性

        private bool _ThrowOnErrorDeserializing;

        
public bool ThrowOnErrorSerializing
        {
            
get
            {
                
return this._ThrowOnErrorSerializing;
            }
            
set
            {
                
this._ThrowOnErrorSerializing = value;
            }
        }

指示在反序列化失败以后是否抛出错误


posted on   今夜太冷  阅读(348)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示