在C#中如何實現通過GetProperty()/SetProperty來獲取和設置屬性?如何通過函數增加和移除事件?
如:
string sText=GetProperty(textBox1,"Text") ;
SetProperty(textBox1,"Text","Data");
如何實現 GetProperty()/SetProperty? AddEvent(textBox1,"Click",tbClick);//tbClick為已定義好的Click事件
RemoveEvent(textBox1,"Click");
如何實現 AddEvent()/RemoveEvent
如:
string sText=GetProperty(textBox1,"Text") ;
SetProperty(textBox1,"Text","Data");
如何實現 GetProperty()/SetProperty? AddEvent(textBox1,"Click",tbClick);//tbClick為已定義好的Click事件
RemoveEvent(textBox1,"Click");
如何實現 AddEvent()/RemoveEvent
{
if (AObject == null) return null;
Type vType = AObject.GetType();
PropertyInfo vPropertyInfo = vType.GetProperty(APropertyName);
if (vPropertyInfo == null) return null;
return vPropertyInfo.GetValue(AObject, null);
}private bool SetProperty(object AObject, string APropertyName, object AValue)
{
if (AObject == null) return false;
Type vType = AObject.GetType();
PropertyInfo vPropertyInfo = vType.GetProperty(APropertyName);
if (vPropertyInfo == null) return false;
vPropertyInfo.SetValue(AObject, AValue, null);
return true;
}private bool AddEvent(object AObject, string AEventName, Delegate AEvent)
{
if (AObject == null) return false;
Type vType = AObject.GetType();
EventInfo vEventInfo = vType.GetEvent(AEventName);
if (vEventInfo == null) return false;
vEventInfo.AddEventHandler(AObject, AEvent);
return true;
}private bool RemoveEvent(object AObject, string AEventName, Delegate AEvent)
{
if (AObject == null) return false;
Type vType = AObject.GetType();
EventInfo vEventInfo = vType.GetEvent(AEventName);
if (vEventInfo == null) return false;
vEventInfo.RemoveEventHandler(AObject, AEvent);
return true;
}private Delegate TextClickEvent = null;private void button1_Click(object sender, EventArgs e)
{
SetProperty(textBox1, "Text", "Zswang 路过!");
Text = string.Format("{0}", GetProperty(textBox1, "Text"));
TextClickEvent = new EventHandler(TextBox_Click);
AddEvent(textBox1, "Click", TextClickEvent);
}private void TextBox_Click(object sender, EventArgs e)
{
MessageBox.Show(((TextBox)sender).Text);
RemoveEvent(sender, "Click", TextClickEvent);
}
不过我觉得楼主的意思是
GetProperty()就是:string sText = textBox1.Text;
SetProperty()就是:textBox1.Text = "Data";
AddEvent()就是:textBox1.Click += new EventHandler(tbClick);
RemoveEvent()就是:textBox1.Click -= tbClick;