将共享属性挂起global.asax(MvcApplication类)是否可以?
然后在其他区域访问它:
MvcApplication.[SharedPropertyName]
修改
我要做的是拥有一个全局可访问的属性,这是我的应用程序设置。
我使用XmlSerializer
来序列化/反序列化包含所有这些属性的对象。它工作得很好,但Load
上的ApplicationSettings
方法是共享的,并返回ApplicationSettings
的一个实例,所以人们在singelton周围建议的其他一些想法是行不通的。这是ApplicationSettings
类:
Public Class ApplicationSettings
#Region "Members/Properties"
Public Property Property1 As String
Public Property Property2 As String
...
#End Region
#Region "Methods"
Public Shared Function GetFilePath() As String
Return HttpContext.Current.Server.MapPath("/Bin/Settings.config")
End Function
Public Shared Function Load() As ApplicationSettings
Try
Dim Serializer As XmlSerializer
Dim Settings As ApplicationSettings
Using Reader As New StreamReader(GetFilePath)
Serializer = New XmlSerializer(GetType(ApplicationSettings))
Settings = CType(Serializer.Deserialize(Reader), ApplicationSettings)
Reader.Close()
End Using
Return Settings
Catch ex As Exception
'Return New ApplicationSettings
Return Nothing
End Try
End Function
Public Sub Save()
Dim Serializer As XmlSerializer
Using Writer As New StreamWriter(GetFilePath, False)
Serializer = New XmlSerializer(GetType(ApplicationSettings))
Serializer.Serialize(Writer, Me)
Writer.Flush()
Writer.Close()
End Using
End Sub
#End Region
End Class
答案 0 :(得分:1)
我会说不。可能有更好的方法来做你想做的事。
答案 1 :(得分:1)
不推荐。如果您需要一个全局可访问的变量或属性,那么它更适合您的类继承的基类。
This link给出了一个控制器基类的例子。
修改强>
根据您的编辑,很难推荐具体的东西,因为如何使用这些设置可以推动您的方法。以下是一些常规提示:
好的,有了这样说,除了这两条道路:
ApplicationSettings.SettingValue
。因此,有一些一般提示可能会产生更好的解决方案。如果没有关于它将如何使用的更多信息,很难推荐具体的东西。
最终编辑:
在下面的评论中进行了一些讨论后,我们发现此资源修复了OP的问题:
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx