これは可能ですか?匿名のタイプを変更することはできますか?
var x = new { name = "name", age = 22 };
このオブジェクトにプロパティを追加または追加することはできますか?それで後の段階で私はそれを作るために高さを加えることができた{ name = "name", age = 22, height = 1.9 };
。
リキャストする方法や新しい物件に追加する方法を探しているだけでなく、エレガントである必要はありません。
これは可能ですか?匿名のタイプを変更することはできますか?
var x = new { name = "name", age = 22 };
このオブジェクトにプロパティを追加または追加することはできますか?それで後の段階で私はそれを作るために高さを加えることができた{ name = "name", age = 22, height = 1.9 };
。
リキャストする方法や新しい物件に追加する方法を探しているだけでなく、エレガントである必要はありません。
いいえ、これは絶対にできません。匿名型は不変であり、そのプロパティの名前と型、および表示される順序によって正確に定義されます。新しいプロパティを追加するのは別のタイプです。
あなたは匿名型の中に行うことができる最高の異なる匿名型のインスタンスを作成することです:
var y = new { name = x.name, age = x.age, height = 1.9 };
(name =
とage =
が必要ではないことに注意してください。コンパイラはあなたのためにそれらを推測します)
実際には、dynamic
、または.NET 4.0にない場合はDictionary<string, object>
のようなプロパティバッグが欲しいようです。
はそれとも、もしかしたら、このような具体的なタイプ:
public class Person {
public string Name { get; set; }
public int Age { get; set; }
public decimal? Height { get; set; }
}
なおheight
はNULLです。
なぜ新しい匿名タイプを作成するだけではないのですか?
var x = new { name = "name", age = 22 };
var y = new { x.name, x.age, height = 1.9 };
おそらくExpandoObjectを使用できますか?
dynamic x = new ExpandoObject();
x.name = "name";
x.age = "22";
x.height = 1.9;
.NET 4ですか?あなたは匿名のものではなくダイナミックなタイプが好きなように思えます。 – Marc
var y = new {x.name、x.age、height = 1.9}; – Onots
[add-properties-to-an-object-with-reflection-in-c]を参照してください(http://stackoverflow.com/questions/18312276/add-properties-to-an-object-with-reflection)。 -in-cqq = 1) – nawfal