我有一个基于控制台的应用程序,它从数据库中提取文件并将它们输出到C盘。它还输出一个excel文件,其中包含所有输出文件的详细信息。以下是app.config文件中的代码片段。
<target name="Group1" acceptedFileTypes="pdf">
<ftpSettings server="localhost" username="anonymous" password="user@user.com" />
<metadataEncoder name="Group1" fileName="Group1_YYYYMMDD.xls" />
</target>
理想情况下,当程序运行时,我希望将excel文件命名为附加在其末尾的日期。有什么办法可以在app.config文件中实现这个目的吗?
此外,这是与上述app.config片段相关的类:
public class MetadataEncoderElement : ConfigurationElement
{
private static readonly ConfigurationProperty messageName = new ConfigurationProperty("name", typeof(string), string.Empty, ConfigurationPropertyOptions.IsRequired);
private static readonly ConfigurationProperty fileName = new ConfigurationProperty("fileName", typeof(string), string.Empty, ConfigurationPropertyOptions.IsRequired);
public MetadataEncoderElement()
{
this.Properties.Add(messageName);
}
[ConfigurationProperty("name", IsRequired = true)]
public string Name { get { return (string)this[messageName]; } }
[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName { get { return (string)this[fileName]; } }
}
感谢所有人的帮助。
修改
已将我的代码编辑为以下
[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName = string.Format(MetadataEncoderElement.fileName, DateTime.Now);
但是现在我有以下错误:
最佳重载方法匹配 for'string.Format(System.IFormatProvider, string,params object [])'有一些 无效的参数
参数1:无法转换为'System.Configuration.ConfigurationProperty' 到'System.IFormatProvider'
参数2:无法从'System.DateTime'转换为'string'
答案 0 :(得分:4)
Richards稍微改进的版本回答:
<metadataEncoder name="Group1" fileName="Group1_{0:yyyyMMdd}.xls" />
代码中的
string fileName = string.Format(yourconfig.FileName,DateTime.Now);
编辑: 如果你想在你的Property中构建它,你可以这样做:
[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName { get { return string.Format((string)this[fileName], DateTime.Now); } }
答案 1 :(得分:2)
<metadataEncoder name="Group1" fileName="Group1_{0:yyyyMMdd}.xls" />
然后做
string fileName = String.Format(yourconfig.FileName,DateTime.Now));
修改强>
您可以保留fileName属性并创建新属性
public string CurrentFileName { get { String.Format(this.FileName,DateTime.Now); } }
答案 2 :(得分:1)
以下为我工作..
public class MetadataEncoderElement : ConfigurationElement
{
[ConfigurationProperty("fileName", IsRequired = true)]
public String FileName
{
get
{
return string.Format((String)this["fileName"], DateTime.Now);
}
}
}