在我的VB.NET应用程序中,我想将一些代码(一个类)移动到一个单独的文件中。单独的文件将使用位于主项目中的函数。
如果我创建了一个类库,则DLL中没有定义从DLL调用的函数,Visual Studio也不会编译它。
我可以用什么方式将代码移入文件并在运行时加载/执行它,并将结果作为我的主代码?我不知道我是否清楚......
答案 0 :(得分:1)
这可以使用接口间接完成。在库中创建一个公共接口,该接口包含您需要针对该主项目的类进行的调用。让主项目的类实现此接口。当主项目启动时,它通过接口将此类的实例传递给库项目。库应存储此引用。它现在可以通过接口使用此引用对主项目类进行调用。
图书馆计划:
Public Interface ITimeProvider
ReadOnly Property Time As Date
End Interface
Public Class LibraryClass
Private Shared _timeProvider As ITimeProvider
Public Shared Sub Init(timeProvider As ITimeProvider)
_timeProvider = timeProvider
End Sub
Public Function GetTimeString() As String
Return "The current time is " & _timeProvider.Time.ToString
End Function
End Class
主要项目:
Public Class SimpleTimeProvider
Implements ClassLibrary1.ITimeProvider
Public ReadOnly Property Time As Date Implements ClassLibrary1.ITimeProvider.Time
Get
Return Date.Now
End Get
End Property
End Class
Public Class MainClassTest
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
ClassLibrary1.LibraryClass.Init(New SimpleTimeProvider)
Dim test As New ClassLibrary1.LibraryClass
Console.WriteLine(test.GetTimeString)
End Sub
End Class
此示例使用在Main项目中定义的类来使用库项目。
答案 1 :(得分:0)
简单的答案是 - 你不能。
您不能assemblyA
引用assemblyB
和 assemblyB
引用assemblyA
解决方案可能是将应用程序和程序集使用的任何代码移动到程序集中。然后两者都可以访问此代码