【发布时间】:2019-06-07 04:13:05
【问题描述】:
我有一个用 Web 窗体和 VB .NET 编写的遗留应用程序。我已经厌倦了这种组合,所以我尝试在 Web API 控制器而不是 ashx 处理程序中编写新功能。对我好。我也更喜欢 C#,因此我尝试从 C# 库中加载我的控制器操作,而不是在 VB .NET 中编写它们。
我已尝试执行以下操作:
- 使用 MapRoute 命名要从中加载的程序集(不能这样做,只能看到 MapHttpRoute,MapRoute 不可用。MapHttpRoute 没有程序集选项)
- 编写我自己的程序集解析器以在运行时加载我的其他项目 DLL。这也不起作用,VB NET 抱怨我使用的代码没有正确实现 GetAssemblies。
这是我尝试使用的代码:
Public Class CustomAssemblyResolver
Inherits IAssembliesResolver
Public Function IAssembliesResolver_GetAssemblies() As ICollection(Of Assembly) Implements IAssembliesResolver.GetAssemblies
Dim baseAssemblies As List(Of Assembly) = AppDomain.CurrentDomain.GetAssemblies().ToList()
Dim controllersAssembly = Assembly.LoadFrom("APIControllers.dll")
baseAssemblies.Add(controllersAssembly)
Return baseAssemblies
'Throw New NotImplementedException
End Function
End Class
我得到的错误是“接口 IAssembliesResolver 没有被这个类实现”。
从单独的项目中加载我的 API 控制器的最简单方法是什么?主项目是VB .NET,我正在加载的项目是C#。
编辑:目前的布局使问题变得复杂。为简单起见,oldyuck 是 web forms/vb .net 的东西,newfast 是新的 C# 项目。
oldyuck 是主要的遗留项目。它有一个巨大的单体类,可以做所有事情。这被实例化为一个可以做所有事情的巨大对象。它也是对 Web 窗体/VB .NET 的讽刺。 newfast 是我的 C# API 控制器项目。它需要来自 oldyuck 的巨大单体对象来对数据库等进行任何操作。
newfast 可以依赖 oldyuck,然后我可以依赖巨大的对象,并实例化它等等,但是当 oldyuck 构建时它不会在 /bin/ 文件夹中结束。
oldyuck 可以依赖 newfast,然后它会在 /bin/ 文件夹中结束。但是在这个设置中,newfast 不能依赖 oldyuck 的 God 对象,所以它不能使用任何代码,而且似乎没有办法将该对象传递给它。
我被困住了。帮助:(
【问题讨论】:
标签: c# vb.net asp.net-web-api2