2011-06-12 132 views
3

是否可以创建一个返回未指定类型的泛型的函数?未指定类型的返回类型

Public Function Create(ByVal type As Type) As DeserializationHelper(Of) 
    Dim DynamicHelper = GetType(DeserializationHelper(Of)).MakeGenericType(type) 

    Return Activator.CreateInstance(DynamicHelper) 
End Function 

一切都在这里工作,除了强类型的返回值。我可以将它作为一个对象,一个非泛型接口或一个非泛型基类返回,但是我正在试图制作一个非常流畅的流式API风格的API。

我试图创建语法如下:

Dim Loader As New XLoader(parentContainer, Map) 
Dim MyCreature As Creature = Loader.Create(GetType(Creature)).From(xml.<Creature>) 

...是的,我知道有内置的XML序列化 - 我希望他们为我工作,但我需要更多的控制。 ;)

如果我将这部分移到不同的项目中,并将其写入C#(然后从VB.NET项目中使用它),C#的Dynamic关键字能帮助我吗?

谢谢。 :)

回答

6

不与VB专家,但希望这将帮助:

Public Function Create(Of TResult)() As DeserializationHelper(Of TResult) 
    Return Activator.CreateInstance(Of DeserializationHelper(Of TResult))() 
End Function 
+0

+1:死的。我不知道该函数本身可能是通用的 - 真棒。 – 2011-06-12 23:20:44