zoukankan      html  css  js  c++  java
  • 放在首页,希望你们帮我来解说一下这个简单的问题,有没有其它的实现方式。

    有两个接口
    Public Interface IMessage
        Sub ShoMessage()
    End Interface

    Public Interface ITextInfo
        ReadOnly Property Text() As String
    End Interface

    实现这两个接口的类有两个
    Public Class Message
        Implements IMessage
        Public Sub ShoMessage() Implements IMessage.ShoMessage
            MsgBox("Message")
        End Sub
    End Class

    Public Class TextInfo
        Implements ITextInfo
        Public ReadOnly Property Text() As String Implements ITextInfo.Text
            Get
                Return "TextInfo"
            End Get
        End Property
    End Class

    现在有一个第三方的类对这两个类进行操作
    Public Class Manager
        Public Sub Execute(ByVal obj As Object)
            MsgBox("无效的类")
        End Sub

        Public Sub Execute(ByVal obj As ITextInfo)
            MsgBox(obj.Text)
        End Sub

        Public Sub execute(ByVal obj As IMessage)
            obj.ShoMessage()
        End Sub
    End Class

    下面的调用程序。
        Sub Main()
            Dim m As New Manager
            Dim obj As Object = New TextInfo
            m.Execute(obj)
            obj = New Message
            m.Execute(obj)
            Console.ReadLine()
        End Sub

    为什么总是执行到了
       Public Sub Execute(ByVal obj As Object)
            MsgBox("无效的类")
        End Sub
    这个方法。

    目前我所知道的,如果外部不使用object能正确的找到对应的方法.

    如果去掉Public Sub Execute(ByVal obj As Object)方法,也能执行正确,如果我目前需要有Public Sub Execute(ByVal obj As Object)这样一个方法,也能执行相应接口的方法啊。

  • 相关阅读:
    Visual Studio 中的 .NET Framework 类库
    泛型
    泛型
    事件
    基于事件的异步模式
    使用委托进行异步编程
    使用 IAsyncResult 调用异步方法
    异步编程设计模式
    演练:使用VS2010 C# 创作简单的多线程组件
    [转][MEF插件式开发] 一个简单的例子
  • 原文地址:https://www.cnblogs.com/zqonline/p/720088.html
Copyright © 2011-2022 走看看