Планирую разделить один большой класс на 5 частей следующей стратегией.
Imports ConsoleApplication1
Module Module1
Interface IA
Function AFunc() As Integer
End Interface
Class A
Implements IA
Public Function AFunc() As Integer Implements IA.AFunc
Return 1
End Function
End Class
Interface IB
Function BFunc() As Integer
End Interface
Class B
Implements IB
Public Function BFunc() As Integer Implements IB.BFunc
Return 2
End Function
End Class
Class AB
Implements IA, IB
Protected _a As New A
Protected _b As New B
Protected _somePropertyOne As String = "value1"
Private _somePropertyTwo As String = "value2"
Public Property SomePropertyTwo() As String
Get
Return _somePropertyTwo
End Get
Set(ByVal value As String)
_somePropertyTwo = value
End Set
End Property
Public Function AFunc() As Integer Implements IA.AFunc
Return _a.AFunc()
End Function
Public Function BFunc() As Integer Implements IB.BFunc
Return _b.BFunc()
End Function
End Class
Sub Main()
Dim ab As New AB
Console.WriteLine(ab.AFunc)
Console.WriteLine(ab.BFunc)
Console.ReadLine()
End Sub
End Module
Возможно это и неправильно, но задача, требует на данном этапе реализовать разделение таким образом, чтобы все методы из набора подклассов, имели доступ к набору общих свойств (в данном случае _somePropertyOne и SomePropertyTwo)
Как это правильнее реализовать?
Куда перенести _somePropertyOne и SomePropertyTwo?
В моем случае идеально подошли Partial Class
Ответ
Используй методы-расширения.
Imports System
Imports System.Runtime.CompilerServices
Public Interface ICommon
Property Value As Integer
End Interface
Public Module IAExts
Public Module IBExts
Public Class Smth
Implements ICommon
Public Property Value As Integer Implements ICommon.Value
End Class
Public Module Module1
Public Sub Main()
Dim X As New Smth() With {.Value = 77}
Console.WriteLine(x.FuncA())
Console.WriteLine(x.FuncB())
End Sub
End Module
Комментариев нет:
Отправить комментарий