Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新包装对象的最佳方法_C#_Java_Vb.net_Oop_Design Patterns - Fatal编程技术网

C# 更新包装对象的最佳方法

C# 更新包装对象的最佳方法,c#,java,vb.net,oop,design-patterns,C#,Java,Vb.net,Oop,Design Patterns,我正在使用VB.NET,但这个问题适用于任何OO语言——Java、C等。我已经用Java和C标记了这个问题,但如果认为不合适,将删除它 我有一个实体类ClassAAA,其中包含对ClassBBB的引用,作为其属性之一: Public Class ClassAAA Private Property _blah As ClassBBB = Nothing Private Property _somethingElse As String Private Property _

我正在使用VB.NET,但这个问题适用于任何OO语言——Java、C等。我已经用Java和C标记了这个问题,但如果认为不合适,将删除它

我有一个实体类
ClassAAA
,其中包含对
ClassBBB
的引用,作为其属性之一:

Public Class ClassAAA

    Private Property _blah As ClassBBB = Nothing
    Private Property _somethingElse As String
    Private Property _anotherthing As String

    ' Make it private so cannot instantiate class without supplying ClassBBB '
    Private Sub New()
    End Sub

    Public Sub New(ByRef value As ClassBBB)
        _blah = value
    End Sub

    Public Property ImportantAttribute As String
        Get
            Return _blah.Imp
        End Get
        Set(ByVal value As String)
            _blah.Imp = value
        End Set
     End Property

      ' other stuff '
End Class
我不想在实体类之外公开
ClassBBB
。这是我的问题:我想对
ClassAAA
进行更新,并且我有一个用于
ClassBBB
的静态/共享更新方法。最好的方法是什么

Public Shared Sub UpdateClassAAA(byRef value as ClassAAA)

   ' XXX Cannot do this because ClassBBB reference is private XXX '
    ClassBBBDAO.update(value._blah)

    ' Do other updates on other ClassAAA attributes '

End Sub
我可以将
ClassBBB
引用公开(或提供一个公共getter方法),但这将公开
ClassAAA
的内部工作

我想做的是使
ClassBBB
reference
Friend
只在程序集(即数据层)中可见,而对客户端项目不可见。但这仍然让我觉得我在揭露这个类的内部工作


有更好的方法吗?

我认为您只需要为ClassBBB成员创建一个getter,或者将更新方法创建为类方法而不是静态的

我认为您只需要为ClassBBB成员创建一个getter,或者将更新方法创建为类方法而不是静态的

我认为,简单的想法是在
ClassAAA
中创建一个公共更新方法,并让其他类根据需要调用它。通过这种方式,您不会公开
ClassAAA
的内部细节,而是可以让其他人激活所需的功能。

我认为,简单的想法是在
ClassAAA
内部创建一个公共更新方法,并让其他类根据需要调用它。通过这种方式,您不会公开
ClassAAA
的内部细节,而是可以让其他人激活所需的功能。

如果
ClassAAA
隐藏并封装
ClassBBB
,那么
ClassAAA
应该有一个公共方法来内部更新
ClassBBB
。设计模式是一个很好的例子,它以一种优美的方式说明了问题的解决方案。

如果
ClassAAA
隐藏并封装
ClassBBB
,那么
ClassAAA
应该有一个公共方法来内部更新
ClassBBB
。设计模式是一个很好的例子,它以一种优美的方式说明了问题的解决方案。

是的,我想你是对的-我将不得不离开共享/静态CRUD方法,将它们转移到实体类中。是的,我想你是对的——我将不得不离开共享/静态CRUD方法,将它们转移到实体类本身。