Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在app.config中使用表达式_Vb.net_Expression_App Config - Fatal编程技术网

Vb.net 在app.config中使用表达式

Vb.net 在app.config中使用表达式,vb.net,expression,app-config,Vb.net,Expression,App Config,我在项目属性下的“设置”页面上添加了一个用户设置: 我要做的是将默认值设置为指向用户MyDocuments文件夹子目录的表达式: String.Format("{0}\XML Cache", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)) 我知道此设置会将一个条目写入app.config文件,即XML。有没有办法将此值标记为表达式而不是字符串?我希望避免使用反射将字符串转换为表达式。以下是我的建议: Publ

我在项目属性下的“设置”页面上添加了一个用户设置:

我要做的是将默认值设置为指向用户MyDocuments文件夹子目录的表达式:

String.Format("{0}\XML Cache", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
我知道此设置会将一个条目写入app.config文件,即XML。有没有办法将此值标记为表达式而不是字符串?我希望避免使用反射将字符串转换为表达式。

以下是我的建议:

Public Function GetCacheBaseDirectory() As String
    Dim cacheBaseLocation As String = My.Settings("XMLCacheDir")
    If cacheBaseLocation.StartsWith("#") Then ' Hm, it is a SpecialFolder
        Dim specialName As String = cacheBaseLocation.Substring(1)

        cacheBaseLocation = System.Enum.Parse(GetType(Environment.SpecialFolder), specialName)
    End If

    Return cacheBaseLocation
End Function
在本例中,您将使用以下值配置
XMLCacheDir
设置:
#MyDocuments


上面的代码段检查设置值是否以
#
开头。如果是,它将假定您的设置指向
环境.SpecialFolder
枚举名称,并以与上面发布的相同方式返回目录(使用
环境.GetFolderPath
)。

谢谢您的建议。如果我写这篇文章时不需要允许用户重新分配缓存目录,我想这会很好。但是,我希望能够获取并设置目录,它可以指向任何位置。好吧,但即使这样,我的建议仍然有效(在我看来,呵呵):您可以使用所有
环境的下拉列表。SpecialFolder
选项让用户选择要存储缓存的特殊文件夹。这个下拉列表可能有一个
自定义
选项,用户可以设置任意目录。