【问题标题】:How to pass an interface to a constructor in vb.net如何将接口传递给 vb.net 中的构造函数
【发布时间】:2012-11-26 14:48:53
【问题描述】:

我正在尝试将一些代码从 c# 转换为 vb.net。整个代码在http://www.codeproject.com/Articles/474418/DataGridViewplus-e2-80-93plusStackedplusHeader。我几乎拥有它,但我遇到了构造函数的问题。在 C# 中,它传递一个接口。像下面这样

    public StackedHeaderDecorator(IStackedHeaderGenerator objStackedHeaderGenerator, DataGridView objDataGrid)
        : this(objDataGrid)
    {
        this.objStackedHeaderGenerator = objStackedHeaderGenerator;
    }

我不确定如何将其转换为 vb.net。如果有人能告诉我如何编写代码以将整数面传递给构造函数,我将不胜感激。

【问题讨论】:

  • 你尝试了什么?你有什么问题?
  • 参考您对@DStanley 回答的评论,请出示您的VB.Net 类的类声明?

标签: c# vb.net interface constructor


【解决方案1】:

你传递一个接口引用就像你传递任何类型一样:

Sub New(objStackedHeaderGenerator As IStackedHeaderGenerator, objDataGrid As DataGridView)

    Me.New(objDataGrid)

    Me.objStackedHeaderGenerator = objStackedHeaderGenerator

End Sub

【讨论】:

  • 感谢您的帮助,但是当我尝试这样做并收到以下错误消息时:'objStackedHeaderGenerator' 无法通过类'StackedHeaderDecorator' 在项目外部公开类型'IStackedHeadeGenerator'
  • @GregoryWilliams 这是您应该添加到问题中的重要信息!
  • 我的猜测是这个构造函数所属的类被标记为 Public 而 IStackedHeaderGenerator 被标记为 Friend/Private/Protected。这意味着 IStackedHeaderGenerator 也是公共的,这不是编译器所抱怨的。
  • Here 是关于该问题的文档。听起来那个接口是私有的,但是没有看到源很难说。正如@jeroenh 建议的那样,这将是一个很好的后续问题。当然,在你做了一些研究之后:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
相关资源
最近更新 更多