返回未指定类型的通用

时间:2011-06-12 20:53:04

标签: c# vb.net generics dynamic fluent-interface

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

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 个答案:

答案 0 :(得分:6)

不是VB的专家,但希望这会有所帮助:

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