У меня есть следующий метод, который я использую, чтобы перебрать все свойства (только свойства) в моих классах и напечатать на экране их имена и значения, которые они содержат, если они есть.
public static void PrintProperties(object obj, int indent = 1)
{
if ( obj == null )
return;
string indentString = new string (' ', indent);
Type objType = obj.GetType ();
PropertyInfo[] properties = objType.GetProperties ();
foreach ( PropertyInfo property in properties )
{
object propValue = property.GetValue (obj, null);
var elems = propValue as IList;
if ( elems != null )
{
foreach ( var item in elems )
{
PrintProperties (item, indent + 3);
}
}
else
{
if ( property.PropertyType.Assembly == objType.Assembly )
{
Console.WriteLine("{0}{1}:", indentString, property.Name);
PrintProperties (propValue, indent + 2);
}
else
{
Console.WriteLine("{0}{1}: {2}", indentString, property.Name, propValue);
}
}
}
К сожалению, я изменяю свойство в одном из моих классов от строки до List<string>
для размещения нескольких значений, которые мне нужно было назначить там, и теперь я получаю ошибку System.Reflection.TargetParameterCountException: 'Parameter count mismatch.'
, которую не знаю, как исправить, и, скорее всего, потому, что у меня есть свойство, которое является списком. Как я могу исправить, чтобы, когда я сталкиваюсь с таким свойством, перечислить все его значения? Может ли кто-нибудь помочь мне, пожалуйста?