【问题标题】:Static factory method does not return object instance in MVC Controller静态工厂方法不返回 MVC 控制器中的对象实例
【发布时间】:2014-10-02 12:53:50
【问题描述】:

我们正在从 .aspx Web 应用程序迁移到 MVC 应用程序。

以下是迁移时的问题:

我有一个第三方 dll,其中包含通过给定接口名称返回实例的静态工厂方法。

控制器代码:

IBus objBus = (IBus) ObjectFactory.GetInstance("IBus") as IBus;

这里,ObjectFactory 来自第三方 dll,定义如下(GetInstance 方法没有更多代码细节)。

public class ObjectFactory
{
    public ObjectFactory();
    public static object GetInstance(string interfaceName);
}

GetInstance 方法在 .aspx 应用程序中完美运行 - objBus 已成功创建。 但是在 MVC 控制器中执行时,同一行(控制器代码)将 objBus 返回为 null。

请提出可能是什么问题。 我想这可能是由于 .aspx 和 mvc 应用程序的架构和/或页面生命周期的差异。 非常感谢您对问题提出任何建议。

【问题讨论】:

    标签: asp.net-mvc static-factory


    【解决方案1】:

    我认为您应该联系您的第三方 DLL 提供商并索取有关如何使用 ASP.NET MVC 的文档。

    如果我是你,我会考虑使用 Unity 删除该 DLL,以便为 MVC 项目注入依赖项。您需要做的就是在 Global.asax 的 Application_Start 方法中使用 UnityConfig 和 DependecyResolver 将您的类实例注入到您的任何控制器方法中。

    如果您需要详细信息,请查看这些精彩文章。

    http://netmvc.blogspot.com/2012/04/dependency-injection-in-aspnet-mvc-4.html

    http://dotnetslackers.com/articles/aspnet/Using-Microsoft-Unity-in-ASP-NET-MVC.aspx

    http://www.codeproject.com/Articles/99361/How-To-Use-Unity-Container-In-ASP-NET-MVC-Framewor

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-28
      • 2012-05-13
      • 2011-05-10
      • 2010-10-29
      • 2012-08-17
      • 1970-01-01
      • 2014-12-10
      • 2016-12-24
      相关资源
      最近更新 更多