你知道在編譯時的屬性的名稱?因爲你可以這樣做:
public static T CastByExample<T>(object o, T example) {
return (T)o;
}
public static object MyMethod(object obj) {
var example = new { FirstProperty = "abcd", SecondProperty = 100 };
var casted = CastByExample(obj, example);
return new {
FirstProperty = casted.FirstProperty,
SecondProperty = casted.SecondProperty,
AddedProperty = true
};
}
然後:
var extendedObject = MyMethod(
new {
FirstProperty = "abcd",
SecondProperty = 100
}
);
var casted = CastByExample(
extendedObject,
new {
FirstProperty = "abcd",
SecondProperty = 100,
AddedProperty = true
}
);
Console.WriteLine(xyz.AddedProperty);
注意,這非常依賴於一個事實,即兩個匿名類型相同的組件,具有相同類型的同名屬性相同的順序是相同的類型。
但是,如果你打算這麼做,爲什麼不製作具體的類型呢?
輸出:
True
,你爲什麼和匿名類這樣做呢? – jason 2010-12-21 20:00:34
我正在使用ASP.NET MVC,我希望任何JSON數據都可以用我的調試信息進行擴展。 – 2010-12-21 20:05:36