首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承option strict

继承option strict
EN

Stack Overflow用户
提问于 2012-12-06 06:27:47
回答 1查看 86关注 0票数 0

我得到了一个对象(MyObject)类型的对象。myObject继承另一个包含函数(ImyFunction)的类。我想调用函数,但我的项目需要在"Option Strict On“中。所以它要求声明对象。

代码语言:javascript
复制
Public MustInherit Class IClass(Of T1)
...
    Public Sub IMyFunction()
    ...


Public Class myClass1 : Inherits IClass(Of Item1)
...
Public Class myClass2 : Inherits IClass(Of Item2)




dim obj as object = new myClass1
...
obj.IMyFunction 'at this moment, I dont know whish class base of IClass I have

(这只是一个样本)

我不能做obj.IMyFunction,因为严格的选项。也许有一种石膏的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 08:19:36

MustInherit关键字并不意味着您不能将其用作变量类型,它只是意味着您不能实例化它。例如:

代码语言:javascript
复制
Dim obj As IClass(Of Item1) = New myClass1()  ' This works
Dim obj2 As IClass(Of Item1) = New IClass(Of Item1)()  ' This will not compile 

然而,因为它是通用的,你必须指定T1的类型,所以没有办法做我认为你真正想做的事情:

代码语言:javascript
复制
Dim obj As IClass = New myClass1()  ' Can't do this
obj.iMyFunction()

在这种情况下,我建议创建一个非泛型基类或接口,如下所示:

代码语言:javascript
复制
Public Interface IInterface
    Sub IMyFunction()
End Interface

Public MustInherit Class IClass(Of T1)
    Implements IInterface
End Class

然后,你可以这样做:

代码语言:javascript
复制
Dim obj As IInterface = New myClass1()
obj.IMyFunction()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13733630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档