静态工厂方法不返回MVC控制器中的对象实例

时间:2014-10-02 12:53:50

标签: asp.net-mvc static-factory

我们正在从.aspx网络应用程序迁移到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控制器中执行时,同一行(Controller代码)会将objBus返回为null。

请提出可能存在的问题。 我想这可能是由于.aspx和mvc应用程序的体系结构和/或页面生命的差异。 对此问题的任何建议都非常感谢。

1 个答案:

答案 0 :(得分:0)

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

如果我是你,我会考虑使用Unity为你的MVC项目依赖注入删除该DLL。您需要做的就是在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