【问题标题】:Passing parameters vs public variables when calling method in dll (vb.net)在 dll (vb.net) 中调用方法时传递参数与公共变量
【发布时间】:2018-12-14 14:42:30
【问题描述】:

我正在将一些代码从我的主项目移动到一个 dll 中,以使我的应用程序更具动态性(该 dll 可以交换为另一个,类似于插件)。我的主项目中的几个子例程已捆绑到 dll 中,并且根据从主项目传递的变量运行不同的代码段。这又是从一个数据库中选择的,该数据库在加载时由 dll 更新,从而可以添加全新的功能而无需安装新版本的应用程序。

现在,除了从调用代码传递到 dll 中的子程序的参数外,该子程序中的代码还使用一些公开声明的变量的值,这些变量跟踪诸如输入数据的源路径之类的事情,是否用户对一些对象等进行了更改。在移动代码之前,这些是在我的主项目的模块中声明的。但是,我的 dll 中的子现在需要这些值。

我可以将所有这些变量值作为参数传递给 dll 中的 sub,即使它们中的大多数在每次调用时都不会被使用(因为我只对 dll 所做的一切使用一个 sub)。这似乎是最简单的解决方案。但是,我知道拥有 10 多个参数的方法被认为是不好的做法。或者我可以将公共变量移动到一个接口 dll(已经存在),我的主项目和我的 dll 都可以访问和更新那里的值。

就性能而言,哪个最好(或最不差)?其中一个选择是否会产生意想不到的后果?

【问题讨论】:

  • 这给我的印象是你的方法是共享的。您应该将这些配置参数传递给对象的构造函数,并将这些值保留为类变量。然后,您的方法可以轻松地从类中获取值。
  • 当有人告诉你时很明显。谢谢!

标签: vb.net parameters global-variables


【解决方案1】:

这给我的印象是您的方法可能是共享的。您应该将这些配置参数传递给对象的构造函数,并将这些值保留为类变量。然后,您的方法可以轻松地从类中获取值。

Class SomeClass

    Public Sub New(ByVal someParameter As String)
        Me.SomeParameter = someParameter
    End Sub

    Public ReadOnly Property SomeParameter As String

    Public Sub SomeMethod()
        ' Can use Me.SomeParameter here
    End Sub

End Class

【讨论】:

    猜你喜欢
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    相关资源
    最近更新 更多