none
app.config文件的问题 RRS feed

  • 问题

  • 请问:如何知道一个配置属性是用户级别的,还是应用程序级别的呢?写了很多代码也没有测出来,汗。。。。

     foreach (System.Configuration.SettingsProperty v in Properties.Settings.Default.Properties)
                {
                    Console.WriteLine("name:" + v.Name);
                    //Console.WriteLine("propertyType:" + v.);
                    Console.WriteLine("string:" +v.ToString());
                    Console.WriteLine("defaultvalue" + v.DefaultValue);
                    Console.WriteLine("readonly:" + v.IsReadOnly);
                    //if(v.Attributes["System.Configuration.ApplicationScopedSettingAttribute"]

                    string s = (string)v.Attributes["ApplicationScopedSettingAttribute"];
                    Console.WriteLine("---------------s:" + s);
                    //Console.WriteLine(v.Attributes["System.Configuration.ApplicationScopedSettingAttribute"].ToString());
                    foreach (System.Collections.DictionaryEntry vv in v.Attributes)
                    {
                        //Console.WriteLine(vv.ToString());
                        Console.WriteLine("key:" + vv.Key);
                        Console.WriteLine("value:" + vv.Value);
                    }
                }

    2009年5月13日 8:28

答案

  • 确实很奇怪,利用Attributes的包含Contain的那3个方法,都无法检得到true。所以目前只能用笨办法,遍历。以下代码,在我机器上得到验证:
    foreach (System.Configuration.SettingsProperty p in Properties.Settings.Default.Properties)
    {
    	foreach (System.Collections.DictionaryEntry item in p.Attributes)
    	{
    		switch (item.Key.ToString())
    		{
    			case "System.Configuration.ApplicationScopedSettingAttribute":
    				Console.WriteLine("应用程序范围的。");
    				break;
    			case "System.Configuration.UserScopedSettingAttribute":
    				Console.WriteLine("应用程序范围的。");
    				break;
    		}
    	}
    }


    理解的越多,需要记忆的就越少
    2009年5月14日 7:45
    版主

全部回复

  • 用户级别的,应用程序级别 分别是指什么意思? 如果你只是想把 Key 做一个分类,你可以在 Key 值中加关键字嘛 如 Key="S:123" K="X:123" ,方法多多
    知识改变命运,奋斗成就人生!
    2009年5月13日 8:31
    版主
  • 先谢楼上。
    工程的应用程序设置中:
    每条记录都有一个“范围”属生,其值可以为:应用程序、用户
    我想在程序中读出这个值。
    2009年5月14日 2:09
  • 举个具体例子
    知识改变命运,奋斗成就人生!
    2009年5月14日 2:10
    版主
  • 确实很奇怪,利用Attributes的包含Contain的那3个方法,都无法检得到true。所以目前只能用笨办法,遍历。以下代码,在我机器上得到验证:
    foreach (System.Configuration.SettingsProperty p in Properties.Settings.Default.Properties)
    {
    	foreach (System.Collections.DictionaryEntry item in p.Attributes)
    	{
    		switch (item.Key.ToString())
    		{
    			case "System.Configuration.ApplicationScopedSettingAttribute":
    				Console.WriteLine("应用程序范围的。");
    				break;
    			case "System.Configuration.UserScopedSettingAttribute":
    				Console.WriteLine("应用程序范围的。");
    				break;
    		}
    	}
    }


    理解的越多,需要记忆的就越少
    2009年5月14日 7:45
    版主
  • 谢谢RickyLin
    您的方法非常有效。
    2009年5月16日 11:52