2011-03-25 3 views
0

아래와 같이 리플렉션을 사용하여 속성 값을 설정하려고합니다. 나는 속성 유형을 찾는 대신에 int를 사용하는 대신 일반적인 유형의 방법이 있는지 알고 싶었습니다.리플렉션을 사용하여 속성 유형을 확인하는 일반적인 방법

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)); 
} 
관련 문제