0

我正在将 .NET 2.0 Winforms 应用程序转换为 ASP.NET MVC3。Winforms 解决方案为业务逻辑使用了多个项目,MVC 应用程序包括这些项目。这些项目也被各种 Windows 控制台应用程序使用。

问题是这些项目用于System.Windows.Forms.Application.StartupPath查找他们使用的文件,而用于 Web 开发System.Web.HttpRunTime.AppDomainAppPath

我希望这两种解决方案都使用相同的项目,并且这些项目尽可能少地被修改,因为它们很大、很旧并且相对没有文档。解决此问题的正确方法是什么?

现在我想我会为每个定义 WEB 的项目创建一个新配置,然后使用#if/#else语句来包含正确的依赖关系并定义getPath()方法的返回。

4

2 回答 2

1

这就是类库的用途。创建一个类库项目,将所有公共位移到那里,然后有一个单独的 WinForms 和 MVC 项目,它们都引用您的类库。

于 2013-03-05T21:25:23.450 回答
1

在开始使用预处理器困扰您的代码之前,您应该考虑创建一个接口IApplicationConfiguratorIApplicationStarter

public interface IApplicationStarter
{
    string GetPath();
}

并根据您的应用程序将其注入 aMvcApplicationStarter或 a 。WinformsApplicationStarter然后,您可以让您的项目库依赖于IApplicationStarter接口。它应该需要对项目进行最少的实现,并且您可以将该模式重用于其他常见的依赖项。研究依赖注入框架,因为它将这种方法带入了一个新的水平。

于 2013-03-06T04:35:01.577 回答