[英]Can I pass an anonymous object into a method that expects a reference parameter of type object?
[英]Can I pass an anonymous type as a parameter to a function?
閱讀這篇文章后,我意識到我無法將匿名類型作為參數傳遞給函數。 那我還有其他選擇嗎?
也許通過傳遞Query.ToList
作為參數會有所幫助,還是我正在重新發明輪子?
更新:我有以下查詢,我想傳遞給一個函數:
Sub Test
Dim Query = (From c In DB Select New With { .ElementName = c.Name })
DoSomething(Query)
End sub
Private Function DoSomething(ByVal Q as object) as string
Dim Query = From c In Q Select c
End Function
我得到的錯誤是
“對象”類型的表達式不可查詢
閱讀這篇文章后,我意識到我無法將匿名類型作為參數傳遞給函數。 那我還有其他選擇嗎?
該帖子說的是謊言。 當然,您可以將匿名類型傳遞給方法。
Function DoSomething(Of T)(items As IEnumerable(Of T))
…
End Function
Dim Query = (From c In DB Select New With {.ElementName = c.Name})
DoSomething(Query)
在這兩種情況下,您都無法確定DoSomething
的定義,因為Object
當然不是可查詢的對象。 ToList
完全沒有幫助,因為結果仍然是匿名類型的集合。
http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx
以為我會嘗試其他一些動態選項,看來您可以通過動態傳遞純匿名類型(即,除了上面的字典或expando選項之外)。
[Test]
public void Test()
{
dynamic d;
int i = 20;
d = (dynamic) i;
Console.WriteLine(d);
}
[Test]
public void Test2()
{
dynamic d;
int i = 20;
d = (dynamic)new { a = 1, b = 12.2, c = "some text" };
MethodA(d);
Console.WriteLine(d);
}
public void MethodA(dynamic o)
{
}
附加選項:ExpandoObject。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.