2014-05-01 36 views
0

我是MVC的新手,我目前正在Visual Studio中开发一个MVC 3项目,我想创建一个全局可访问的方法或变量。当我在全球范围内说我的意思是在我的Web项目,服务层项目和数据层项目中可用。创建一个全局方法来调用MVC项目

我想当我说全球我的意思是整个解决方案的全球。

我试着在解决方案项目文件夹中创建一个类,并在我的Web项目中引用,但它不让我添加对类的引用,因为它不是DLL。

我有点困惑如何做到这一点。任何建议,将不胜感激。另外请记住,尽管我是一名程序员,但对MVC和编程而言,我仍然有点新。

编辑:我也尝试添加在Global.asax文件的方法,但无法调用它

+1

不!尝试找到另一个尊重OOP的解决方案。我们有足够紧密耦合的代码。 – MikeSW

+0

你需要什么样的全局方法/变量?设计您的项目可能会有更好的方法来避免全局数据。 –

+0

我的Spidey感很刺痛 - 这听起来不是一个好主意。你不应该有像这样的多个项目链接的因变量。例如,我建议你看看通过HttpContext.Current.Session []使用会话状态来共享数据。您可以通过引用'System.Web'在任何项目,Web或类库中访问它。 –

回答

2

您应该创建在其中定义类的共享组件。然后,您可以从需要该功能的所有项目添加对共享程序集的引用。

0

想要成为“全局”的类听起来像某种服务。例如,我想这就是您可能想要用日志服务完成的事情。

以日志记录服务为例,对于日志记录服务的接口,通常是在轻量级合同类型程序集中定义的最佳实践。然后任何需要实现ILoggingService的程序集应该使用IoC容器(例如AutofacMEF)注入必要的实现。

这种模式很常见,并允许您在保持实现松散耦合的同时共享公共服务。此外,这种模式将导致高度可测试的代码,因为假实现可以被注入Moq