返回未指定类型的通用泛型

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语法。

我正在尝试创建以下语法:

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

我知道有内置的xml序列化器,但它们对我没有用,因为我需要更多的控制。;)

如果我将此部分移动到另一个项目中,并用C#编写它(然后从VB.NET项目中使用它),那么C#的Dynamic关键字会对我有所帮助吗?

谢谢。:)

1个回答

6

我不是VB的专家,但希望这可以帮到您:

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

+1:完全正确。我不知道函数本身可以是通用的 - 太棒了。 - Brian MacKay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接