Chcę stworzyć kontrolkę (akurat GridView), której właściwościami będzie kilka pól typu IList, które, po odpowiedniej obróbce, będą wyświetlane tak jak sobie chce
(np jako wlasciwości mają być TYPY, OPISY, WARTOŚCI, wszystkie te 3 rzeczy mają wzajemne zależności i ja chce na tej kontrolce zaprezentować w odpowiedni sposób)
mam w kontrolce wlasciwość
public IList Opisy
{
get{return dsc};
set{dsc = value};
}
private IList dsc;
mam tez wlasciwości czego szukać - jakiego pola, czyli jakie pole reprezentuje Opis (Caption), a jakie Wartość
public string OpicCaption
{
get{return dscCaption};
set{dscCaption= value};
}
private string dscCaption;
w Formie, na której jest kontrolka, mam też jakąś listę obiektów
pzypisuję jedno do drugiego;
gridViev.Opisy = listaOpisow;
mówię, że to co ma być wyswietlone ma się nazywać odpowiednio, czyli żeby wyciągnąć wartość trzeba odwołac się do pola czy wlasciwości o podanej nazwie
gridView.OpicCaption = "Nazwa"
teraz przygotowuję sobie dane w kontrolce
if (Opisy== null)
{
throw new Exception("bład Opisy Null");
}
else
{
foreach (var item in Opisy)
{
System.Type tp = item.GetType();
//na razie założyłem, że jest - nie ma sprawdzania czy jest czy go nie ma
tp.GetMember(dscCaption);
String string1 =String.Empty;
//nie wiem co, jaki typ tutaj dać aby byłó dobrze, próbwałem z różnymi i nie działało
object obj = tp.GetMember(dscCaption)[0].ReflectedType;
switch (tp.GetMember(dscCaption)[0].MemberType)
{
case System.Reflection.MemberTypes.Field:
obj = ((System.Reflection.FieldInfo)tp.GetMember(dscCaption)[0]).GetValue(obj);
break;
case System.Reflection.MemberTypes.Property:
obj = ((System.Reflection.PropertyInfo)tp.GetMember(dscCaption)[0]).GetValue(obj,null);
break;
}
}
}
i tu jest problem - jak dobrać się do wartości, właściwości o danej Nazwie
chcę pobrac wartość za pomocą poniższego fragmętu
switch (tp.GetMember(dscCaption)[0].MemberType)
{
case System.Reflection.MemberTypes.Field:
obj = ((System.Reflection.FieldInfo)tp.GetMember(dscCaption)[0]).GetValue(obj);
break;
case System.Reflection.MemberTypes.Property:
obj = ((System.Reflection.PropertyInfo)tp.GetMember(dscCaption)[0]).GetValue(obj/*tu jest bład*/,null);
break;
}
ale mam bład
Object does not match target type.
stąd moje pytanie i prośba - jak pobrać wartość danego obiektu o danej nazwie
z góry dziękuję za pomoc
ps - ja tam biegły w C# nie jestem, coś tam próbuję robic, więc może i głupoty bedą w tym co napisałem powyżej