Динамически вставьте дату в App.Config - PullRequest
2 голосов
/ 02 декабря 2010

У меня есть консольное приложение, которое извлекает файлы из базы данных и выводит их на диск 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);

Однако теперь у меня есть следующие ошибки:

Лучший перегруженный метод соответствует для 'string.Format (System.IFormatProvider, string, params object []) 'имеет недопустимые аргументы

Аргумент 1: невозможно преобразовать из' System.Configuration.ConfigurationProperty 'в' System.IFormatProvider '

Аргумент 2: невозможно преобразовать 'System.DateTime' в 'string'

Ответы [ 3 ]

4 голосов
/ 02 декабря 2010

Немного улучшенная версия ответа Ричардса:

<metadataEncoder name="Group1" fileName="Group1_{0:yyyyMMdd}.xls" />

в коде

string fileName = string.Format(yourconfig.FileName,DateTime.Now);

РЕДАКТИРОВАТЬ: Если вы хотите построить его в своей собственности, вы можете сделать это следующим образом:

[ConfigurationProperty("fileName", IsRequired = true)]
public string FileName { get { return string.Format((string)this[fileName], DateTime.Now); } }
2 голосов
/ 02 декабря 2010
<metadataEncoder name="Group1" fileName="Group1_{0:yyyyMMdd}.xls" /> 

Тогда сделай

string fileName = String.Format(yourconfig.FileName,DateTime.Now));

EDIT

Вы можете сохранить свойство fileName как есть и создать новое свойство

public string CurrentFileName { get { String.Format(this.FileName,DateTime.Now); } }
1 голос
/ 02 декабря 2010

у меня работает следующее ..

        public class MetadataEncoderElement : ConfigurationElement
    {
        [ConfigurationProperty("fileName", IsRequired = true)]
        public String FileName
        {
            get
            {
                return string.Format((String)this["fileName"], DateTime.Now);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...