2016-11-15 7 views
0

私は、他の場所で生成された匿名型のオブジェクト型のパラメータを受け入れる関数を持っています。私はジェネリッククラスを持っていますが、ジェネリッククラスに渡される型としてその匿名型を使用するインスタンスを作成しようとしています。しかし、私はこれを動作させることができません。私はに与えるかを把握することはできませんVB.Netで匿名オブジェクト型を使用して汎用クラスオブジェクトを作成する

Public Sub MyFunction(data As Object) 
    'data is an anonymous Type 

    dim item = new Foo(Of ??) 
End Sub 

:私はこのような何かを持っている私の機能でそう

Class Foo(Of T) 
    ... 
End Class 

:だからここ

は、私は私のジェネリッククラスの持っているものは基本的ですこれを動作させるための新しいFooライン。私が試みた1つの方法は、タイプTのパラメータを受け入れるコンストラクタを作成して型を推論することでしたが、コンストラクタを呼び出すとこのコンパイルエラーが発生します:

型引数が少なすぎる'Foo(Of T)'

ジェネリッククラスが匿名タイプを受け入れるには、どうすればこの問題が発生するのですか?

+0

System.Objectは一般的ではありません。したがって、ジェネリッククラスにはほとんど使用できません。反射を考慮する。 –

+1

ジェネリッククラスに型が必要なので、Reflectionがどのように役立つのか分かりません – Rono

答えて

0

変更MyFunctiondataobjectからTまでです。

Public Sub MyFunction(Of T)(data As T) 
    Dim item = New Foo(Of T)() 
End Sub 
+0

ジェネリック関数に渡される 'data'オブジェクトはどうでしょうか?それはどこで使われますか? –

関連する問題