現時点では、私のオブジェクトの値を書き留めていません。それらの中には、ToString()
メソッドを使用して問題の原因となるプロパティーがList<string>
であるものがあります。ここでは、ベースクラスで使用するコードを使用して、プロパティの名前と値を文字列に取得します。プロパティがC#のリフレクションを使用したリストであるかどうかを確認します。
public override string ToString()
{
string content = "";
foreach (var prop in this.GetType().GetProperties())
{
if (prop.PropertyType is IList<string> && prop.GetType().IsGenericType && prop.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>)))
content += prop.Name + " = " + PrintList((List<string>)prop.GetValue(this));
else
content += prop.Name + " = " + prop.GetValue(this) + "\r\n";
}
content += "\r\n";
return content;
}
private string PrintList(List<string> list)
{
string content = "[";
int i = 0;
foreach (string element in list)
{
content += element;
if (i == list.Count)
content += "]";
else
content += ", ";
}
return content;
}
いずれにせよ、プロパティーがリストであるかどうかのチェックは機能しません。これは愚かな質問かもしれないし、リフレクションでうまく動作しない悪い方法かもしれませんが、私はちょっと新しく、何が起こっているのか理解する助けに感謝します。
試みは、私は+ = '' string'sに '使用して非効率性を参照してください – Steve
' prop.PropertyType.IsAssignableFrom(typeof演算(IListの)) ' –
Nkosi