【问题标题】:Casting Generic Types铸造通用类型
【发布时间】:2010-04-20 23:22:52
【问题描述】:
Public Function CastToT(Of T)(ByVal GenericType(Of Object) data) As GenericType(Of T)
   Return DirectCast(data, GenericType(Of T))
End Function

以上显然行不通。如果我知道数据中的所有对象实际上都是 T 型,有什么方法可以执行此转换?

【问题讨论】:

  • 这是不可能的,除了接口。
  • 如果您将其写为答案而不是评论,您将获得 15 分...不过谢谢。
  • 这是一个常见问题解答。例如。详细处理见此:stackoverflow.com/questions/2033912/…

标签: vb.net generics casting


【解决方案1】:

这是不可能的,除了接口。

【讨论】:

    【解决方案2】:

    不,你不能直接施放它。大概你的GenericType 是某种容器。您只需创建GenericType(Of T) 的新实例并将内容复制到其中,将每个对象从Object 转换为T。如果 GenericTypeSystem.Collections.List(Of T),那么 LINQ 让这变得非常简单。

    【讨论】:

    • 感谢 Evgeny。只有 DotNET 2.0,所以我没有 Linq。写一个直接投射所有项目的函数是没有问题的,只是想知道我是否可以使用一个肮脏的技巧。
    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多