Общий способ проверки типа свойства с помощью отражения - PullRequest
0 голосов
/ 25 марта 2011

Я пытаюсь установить значение свойства, используя отражение, как показано ниже. Я хотел знать, есть ли какой-нибудь общий способ найти тип свойства вместо того, чтобы делать это нижеуказанным способом.

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);
            }
    }
    }  

}

Пожалуйста, предложите.

Спасибо

1 Ответ

0 голосов
/ 25 марта 2011

TypeDescriptor был создан для того, что вы, кажется, делаете.

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

if (isValid)
{
    var convertedValue = converter.ConvertFromString(value));
}
...