0
メッセージと任意の型の情報オブジェクト(通常は匿名オブジェクト)をとる例外クラスを記述する必要があります。値型配列を参照型配列に変換する
私は次のコードを持っている:彼らは、オブジェクトと、このタイプを継承しませんので、匿名オブジェクトのプロパティの1つが値型指定されたアイテムの配列であるとき
public SpecialException(string message, object info) : this(message)
{
StringBuilder sb = new StringBuilder();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(info.GetType()))
{
object value = property.GetValue(info);
string valueStr = value.GetType().IsArray ? (value as IEnumerable<object>).Select(x => x.ToString()).Aggregate((x, y) => $"{x}, {y}") : value.ToString();
sb.AppendLine($"{property.Name} = {valueStr}");
}
Info = sb.ToString();
}
問題があり、このコードは動作しませんが共分散のものはそれらと一緒に働くことはできません。私が試みたが、仕事や無粋しないのどちらか見つけたもの
:使用
Dictionary<string, object>
-IDictionary<string, object>
インタフェースを使用してAdd
方法- をオーバーライドすることはできません - インターフェイスのすべてのメソッドを実装する必要はありません。単純な例外の場合
ExpandoObject
とdynamic
キーワードを使用すると、上記のコードと同じ問題が発生します。- 0を使用してJSONにシリアル化とNewtonsoft JSONは - 私は何とかを反復処理することで、おそらく、これを達成するために(おそらく、リフレクションを使用して)エレガントな方法があるとし、サードパーティのライブラリに依存(またはWeb DLL)
をしたくありませんアレイ。誰もが解決策を提案できますか?
'(IEnumerableを
値の型は、実際には動作しませんどのようにobject' –
'を継承していますか?あなたは例外を取得していますか? –