2011-03-25 67 views
0

我想用下面的反射來設置屬性值。我想知道是否有任何通用的方式來查找屬性類型,而不是在他下面的方式。使用反射來檢查屬性類型的一般方法

string currentlblTxt; 
string currentTxt; 

Assembly assembly = Assembly.GetAssembly(typeof(myAdapter)); 
myAdapter currentEventObject = (myAdapter)assembly.CreateInstance(myClassName); 

int m = k; 
for (m = 1; m < k; m++) 
{ 
    currentlblTxt = ((Label)FindControl("lblB" + m.ToString())).Text; 
    currentTxt = ((TextBox)FindControl("txtB" + m.ToString())).Text;    


    if (!string.IsNullOrEmpty(currentTxt)) 
    { 

    if (currentEventObject.GetType().GetProperty(currentlblTxt) != null) 
    { 
     if ((currentEventObject.GetType().GetProperty(currentlblTxt).PropertyType.Equals(typeof(System.Boolean)))) 
     { 
     currentEventObject.GetType().GetProperty(currentlblTxt).SetValue(currentEventObject, Convert.ToBoolean(currentTxt), null);       
     } 
     else if ((currentEventObject.GetType().GetProperty(currentlblTxt).PropertyType.Equals(typeof(System.DateTime)))) 
     { 
      currentEventObject.GetType().GetProperty(currentlblTxt).SetValue(currentEventObject, Convert.ToDateTime(currentTxt), null); 
     } 
     else if ((currentEventObject.GetType().GetProperty(currentlblTxt).PropertyType.Equals(typeof(System.Guid)))) 
     { 
      Guid val = new Guid(currentTxt); 
      currentEventObject.GetType().GetProperty(currentlblTxt).SetValue(currentEventObject, val, null); 
     } 
     else 
     { 
      currentEventObject.GetType().GetProperty(currentlblTxt).SetValue(currentEventObject, currentTxt, null); 
      } 
    } 
    } 

} 

請提出建議。

感謝

回答

0

TypeDescriptor是爲你彷彿在做製造。

var desciptor = TypeDescriptor.GetConverter(propertyType); 
var isValid = converter.IsValid(value); 

if (isValid) 
{ 
    var convertedValue = converter.ConvertFromString(value)); 
} 
相關問題