将日期动态插入App.Config

时间:2010-12-02 09:08:47

标签: c# date app-config filenames

我有一个基于控制台的应用程序,它从数据库中提取文件并将它们输出到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'

3 个答案:

答案 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);
            }
        }
    }