Ich muss ein generisches Objekt in eine NameValueCollection konvertieren. Ich versuche zu reflektieren. Während ich die übergeordneten Eigenschaften abrufen kann, kann ich die Eigenschaften einer übergeordneten Eigenschaft, die ein Objekt ist, nicht abrufen.Objekt in NameValueCollection konvertieren
Class One
public string name{get;set}
Class Two
public string desc{get;set}
public One OneName{get;set;}
public static NameValueCollection GetPropertyName(
string objType, object objectItem)
{
Type type = Type.GetType(objType);
PropertyInfo[] propertyInfos = type.GetProperties();
NameValueCollection propNames = new NameValueCollection();
foreach (PropertyInfo propertyInfo in objectItem.GetType().GetProperties())
{
if (propertyInfo.CanRead)
{
var pName = propertyInfo.Name;
var pValue = propertyInfo.GetValue(objectItem, null);
if (pValue != null)
{
propNames.Add(pName, pValue.ToString());
}
}
}
return propNames;
}
Ich gehe davon aus, dass es einige rekursive Aufrufe geben muss, aber nicht herausfinden, wie es geht. Jede Hilfe wird geschätzt.
Ist 'objType' der Typ von' objectItem'? Wenn ja, können Sie diesen Parameter entfernen. Sie haben auch eine 'propertyInfos'-Variable erstellt, die Sie nicht verwenden. – ThatMatthew
Ich könnte diesen Code gerade jetzt verwenden –