我處於需要從方法返回匿名類型的對象的情況,使用dynamic
作爲返回類型是個好主意嗎?需要考慮什麼?作爲返回類型的動態
public dynamic MyMethod()
{
// process and return the object of an anonymous type
}
我處於需要從方法返回匿名類型的對象的情況,使用dynamic
作爲返回類型是個好主意嗎?需要考慮什麼?作爲返回類型的動態
public dynamic MyMethod()
{
// process and return the object of an anonymous type
}
是的,它具有意義如果「保證書」,你會總是與一些特點返回一個對象,具有Id
例如(忽略也許它會更好地使用接口)
public dynamic MyMethod()
{
var temp = new ExpandoObject();
temp.Id = 5;
return temp;
}
Console.WriteLine(MyMethod().Id);
所以,如果你保證所有的物品都可以Turn Left-Right
但你不能保證它們是飛機,汽車,摩托車,船隻。 (所以它的好,如果你正在做Duck typingWhen I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
)
請注意,如果你再好好反思你的對象,它可以成爲醜陋:How do I reflect over the members of dynamic object?
它沒有任何意義,您可以返回object
具有相同的效果。
P.S .:同樣,匿名類型不如返回類型。
特別不好的返回類型,因爲他們內部。如果您返回裝配體邊界之外,則會收到運行時綁定錯誤。在返回動態時,ExpandoObject是匿名的更好選擇。 – jbtule
返回動態對象確實有讓您訪問的benifit沒有使用反射的anonmymous類型的屬性(儘管沒有intellisense)。如果採取這種方法,您需要確保匿名類型的屬性與您在動態對象上訪問的內容相匹配。否則,你會得到運行時錯誤
不過,我建議你考慮返回的具體類型,而不是
不,我不想反映,我只是想通過JSON返回它(實際上該方法實際上是一種MVC操作方法),並忘記它。儘管我使用持有者類的接口。 –
@LordCover然後它不應該是非常重要的。 JSON解析器必須反映該對象。 – xanatos
+1我實現了它,它工作得很好,任何額外的筆記? –