【问题标题】:Accessing private functions and variables in a public class from another class从另一个类访问公共类中的私有函数和变量
【发布时间】:2014-09-05 17:42:34
【问题描述】:

正如标题所说,我遇到了一个问题,我必须在类中调用某些私有函数。

Public Class Class1
private Type
Private Name
private Function()

我已尝试执行以下操作:

Public Class Class1
  Dim copyClass As Class1
  Public Shared Instance As Class1

  Public Sub New()
    MyBase.New()
    copyClass = Me
  End Function
  Public Function createInstance() As Class1
    Instance = copyClass
    Return Instance
  End Function

然后在我的另一个班级 Class2 中,我添加了:

  Public Property callingObject As wdCopyPatch
    Get
      Return copyObject
    End Get
    Set(value As wdCopyPatch)
      copyObject = value
    End Set
  End Property

现在,我可以在 Class1 的函数中执行以下操作

Dim Ob as Class2
Ob.callingObject = createInstance() 

这允许我使用 Class2 中的 copyObject,但只允许我访问 Class1 的公共函数和变量。我该怎么做才能访问 Class1 的私有函数和变量而不公开所有内容?

感谢任何建议或 cmets :)

【问题讨论】:

  • “私有”减速 si 使其私有化的整个想法...就像您对第二堂课所做的那样,您需要在第一堂课中创建属性,设置后可以调用一个它的内部函数,并通过属性返回一些东西
  • 记住,你可以在属性的“set”和“get”方法中做“工作”...
  • 好的,感谢您指出这一点。
  • 如果您需要访问某些私有字段和函数,为什么它们是私有的?
  • 也许一个应该是“父”用作帮助器的私有内部类。然后,内部类可以根据需要使用,但功能不会暴露给世界其他地方。

标签: vb.net


【解决方案1】:

根据我的 cmets,这里有一些代码:

Sandbox 是我的类,它有一个私有函数,以及一个从该私有函数获取信息的公共属性。

otherclass,调用沙盒的这个属性。

Public Class sandbox

    Public ReadOnly Property myHiddenValue() As String
        Get
            Return get_that_sucker()
        End Get

    End Property

    Private Function get_that_sucker()
        Return "boo!"
    End Function

End Class

Public Class otherClass

    Public Sub mySub()
        Dim mysandbox As New sandbox
        MsgBox(mysandbox.myHiddenValue)
    End Sub

End Class

【讨论】:

  • 至于私有函数,有什么办法可以将它们用于我的 Class1 实例?
  • 私有函数可以在其父级“内部”使用......所以class1中的任何其他函数都可以使用私有函数(in)class1。
  • 那么,使用公共函数调用一些私有函数是否可以接受?
  • 我会通过一个属性来做到这一点,就像我在上面答案中的代码一样。如果你的公共函数,调用你的私有函数,结果是完全一样的......那么你实际上有一个公共函数:-)私有函数不能在它们的父实例化的上下文之外使用......例如, 一个属性,可以调用 3 个不同的私有函数,从它们那里获取一些信息,重新工作,并提供一个输出......这是你将使用私有函数的地方,不应该直接从“外部”调用跨度>
  • 没有问题,如果需要,请随时获得更多说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2012-05-29
  • 2017-03-08
  • 2020-09-02
相关资源
最近更新 更多