如何基于传递给VB.NET泛型方法的类型执行条件逻辑
时间:2020-03-06 14:53:00 来源:igfitidea点击:
我想创建一个VB.NET通用工厂方法,该方法创建类的实例(作为控件容器的本地反转)。如果我将接口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
Public Function Build(Of T) as T If T.gettype Is gettype(IDoSomething) then Return New DoSomething() ElseIf T.gettype Is gettype(IAndSoOn) Then Return New AndSoOn() Else Throw New WhatWereYouThinkingException("Bad") End If End Sub