.net - 如何根据传递给 VB.NET 泛型方法的类型执行条件逻辑

标签 .net vb.net generics

我想创建一个 VB.NET 通用工厂方法来创建类的实例(作为本地开发的控制反转容器)。如果我将接口(interface) IDoSomething 作为通用参数传递,我想返回 DoSomething 的实例(实现 IDoSomething)。我无法弄清楚 if 语句的语法。我想写这样的东西:

Public Function Build(Of T) as T  
    If T Is IDoSomething then  
        Return New DoSomething()  
    ElseIf T Is IAndSoOn Then  
        Return New AndSoOn()  
    Else  
        Throw New WhatWereYouThinkingException("Bad")  
    End If  
End Sub 

但是这段代码无法编译。

最佳答案

Public Function Build(Of T) As T
  Dim foo As Type = GetType(T)

  If foo Is GetType(IDoSomething) Then
    Return New DoSomething()
  ...
  End If
End Function

关于.net - 如何根据传递给 VB.NET 泛型方法的类型执行条件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149484/

相关文章:

java - 为什么我可以返回我的 List<T> 返回类型未指定类型的列表?

.net - Visual Studio 2008 不会编辑只读文件

java - SOAP Web 服务回调架构?

c# - C++ 中的垃圾回收

asp.net - 带有 SQL 数据源的 Gridview 正在删除空格

java - 通用方法触发类型安全错误 - 为什么?

c# - 在 Autofac 中使用接口(interface)作为类型参数解析泛型

c# - 将 XAttribute 插入到指定位置的现有 XElement

.net - Outlook 2003 和 Outlook 2007 插件 COM 资源发布

sql - 在 SQL 查询中匹配第一个字母的文本字符串