摘要:屬性預設值自動填入
我本來以為 DefaultValueAttribute 指定的值可以在程式執行時自動代入(我太天真了)
看了 http://www.dotblogs.com.tw/yc421206/archive/2010/06/15/15897.aspx 這一篇的這一段才知道,還是要在程式執行中給值,那設了預設值是要幹嘛的? 我想應該是有甚麼做用,可是我不懂。
private string _AppVersion="1.0";
[Browsable(true),Category("自訂屬性"),DefaultValue("1.0")]
public string AppVersion
{
get { return _AppVersion; }
set { _AppVersion = value; }
}
那萬一兩個地方的值不一樣怎麼辦?
自己寫了一段程式,讓程式執行時不用再給值,也不會有不一致的問題發生
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
ClassA classA;
public Form1()
{
InitializeComponent();
classA = new ClassA();
}
public class ClassA
{
[DefaultValueAttribute(1)]
public int PropertyPa { set; get; }
[DefaultValueAttribute("2")]
public string PropertyPb { set; get; }
public ClassA()
{
PropertyInfo[] listPropertyInfo = typeof(ClassA).GetProperties();
foreach (PropertyInfo propertyInfo in listPropertyInfo)
{
if (propertyInfo != null && propertyInfo.CanWrite)
{
AttributeCollection attribute = TypeDescriptor.GetProperties(this)[propertyInfo.Name].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attribute[typeof(DefaultValueAttribute)];
propertyInfo.SetValue(this,myAttribute.Value,null);
Debug.WriteLine("The default value is: " + myAttribute.Value.ToString());
}
}
}
}
}
}