解耦:无法实现间接引用
Decoupling: Unable to implement indirect referencing
我的代码 A、B、C 分为三个部分。B 是一个 class 库,它引用 A 也是一个 class 库。在A中,定义了一个classMathOperations
,其中包含一个函数ADD
。 B 部分有一个 class Factory
,它又有一个函数 createMathsObject
,其中 returns 是一个 MathOperations
类型的对象。 C 部分引用 B。我可以取消 B 部分并在 C 部分中创建 MathOperations
类型的对象,并在定义 class 的地方直接使 C 引用 A。但是,我正在尝试查看如何分离代码的各个部分,在这种情况下,A 和 C.I 给出了 A、B 和 C 三部分中的每一个的代码。提到了我收到的错误消息稍后我需要你的帮助。
A 部分:Class 库 - 命名为 MathLibrary.dll
Public Class MathOperations
Function ADD(ByVal a As Integer, ByVal b As Integer) As Integer
Return (a + b)
End Function
End Class
B 部分:Class 库 - 命名为 FactoryMathsLibrary.dll,其中引用了 MathLibrary.dll
Imports MathLibrary
Public Class Factory
Shared Function createMathsObject() As MathOperations
Return New MathOperations()
End Function
End Class
C 部分:Exe 文件 - 引用 FactoryMathsLibrary.dll
Imports FactoryMathsLibrary
Module Module1
Sub Main()
Dim a, b As Integer
Dim m As Object = Factory.createMathsObject() 'Error comes here
Console.Write("Enter 1st value: ")
a = Console.ReadLine()
Console.Write("Enter 2nd value: ")
b = Console.ReadLine()
Console.WriteLine("a + b = {0}", m.ADD(a, b))
Console.ReadLine()
End Sub
End Module
我的印象是,既然 C 引用 B,B 引用 A,那么一切都会好起来的。但是我在行 Dim m As Object = Factory.createMathsObject()
中收到错误。报错信息如下: 能否请大神帮忙解答一下报错的原因和解决方法??
我完全按照你的方式做了,在你的 exe 项目中你没有添加对“MathLibrary.dll”的引用。如果不在 exe 项目中包含第二个库,则不能包含引用另一个库的库 (Unless you merge them into one)!如果您不也包含它,那么您将遇到您所遇到的问题。
因此, 您只需添加对“FactoryMathsLibrary.dll”和“MathLibrary.dll”[=30= 的引用]
Project > project_name Properties... > References > Add... > MathLibrary.dll > OK
❌ 无引用
✔️有参考
我的代码 A、B、C 分为三个部分。B 是一个 class 库,它引用 A 也是一个 class 库。在A中,定义了一个classMathOperations
,其中包含一个函数ADD
。 B 部分有一个 class Factory
,它又有一个函数 createMathsObject
,其中 returns 是一个 MathOperations
类型的对象。 C 部分引用 B。我可以取消 B 部分并在 C 部分中创建 MathOperations
类型的对象,并在定义 class 的地方直接使 C 引用 A。但是,我正在尝试查看如何分离代码的各个部分,在这种情况下,A 和 C.I 给出了 A、B 和 C 三部分中的每一个的代码。提到了我收到的错误消息稍后我需要你的帮助。
A 部分:Class 库 - 命名为 MathLibrary.dll
Public Class MathOperations
Function ADD(ByVal a As Integer, ByVal b As Integer) As Integer
Return (a + b)
End Function
End Class
B 部分:Class 库 - 命名为 FactoryMathsLibrary.dll,其中引用了 MathLibrary.dll
Imports MathLibrary
Public Class Factory
Shared Function createMathsObject() As MathOperations
Return New MathOperations()
End Function
End Class
C 部分:Exe 文件 - 引用 FactoryMathsLibrary.dll
Imports FactoryMathsLibrary
Module Module1
Sub Main()
Dim a, b As Integer
Dim m As Object = Factory.createMathsObject() 'Error comes here
Console.Write("Enter 1st value: ")
a = Console.ReadLine()
Console.Write("Enter 2nd value: ")
b = Console.ReadLine()
Console.WriteLine("a + b = {0}", m.ADD(a, b))
Console.ReadLine()
End Sub
End Module
我的印象是,既然 C 引用 B,B 引用 A,那么一切都会好起来的。但是我在行 Dim m As Object = Factory.createMathsObject()
中收到错误。报错信息如下: 能否请大神帮忙解答一下报错的原因和解决方法??
我完全按照你的方式做了,在你的 exe 项目中你没有添加对“MathLibrary.dll”的引用。如果不在 exe 项目中包含第二个库,则不能包含引用另一个库的库 (Unless you merge them into one)!如果您不也包含它,那么您将遇到您所遇到的问题。
因此, 您只需添加对“FactoryMathsLibrary.dll”和“MathLibrary.dll”[=30= 的引用]
Project > project_name Properties... > References > Add... > MathLibrary.dll > OK