Получение/установка значений по умолчанию из моего приложения.конфиг


Представьте, что мне нужна цветовая палитра для приложения Мои приложения WinForms иметь единообразный вид.

То, что я делал, было создать статический вспомогательный класс и вспомогательные методы, которые я могу вызвать из любого места в моем коде, и ссылаться на то, что мне нужно от приложения.параметры файла.

Вот к примеру, я получаю школа имя с приложения.конфиг файл, поэтому я могу продать это приложение в других школах с минимальными изменениями с моей стороны.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="schoolName" value="Uboldi"/>
  </appSettings>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace Uboldi.Helpers
{
    public static class CustomizationHelper
    {
        public static string GetSchoolName()
        {
            return ConfigurationManager.AppSettings["schoolName"];
        }
    }
}

Использование:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Uboldi.Helpers;

namespace Uboldi
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            LoadFormTitle();
        }

        private void LoadFormTitle()
        {
            var schoolName = CustomizationHelper.GetSchoolName();
            this.Text = String.Format("Sistema {0} - Pagina Principal", schoolName);
        }
    }
}

Есть ли какие-то явные ошибки я делаю, выбирая этот тип архитектуры?



208152
71
задан 24 января 2011 в 09:01 Источник Поделиться
Комментарии
3 ответа

Я думаю, что все будет в порядке. Другим вариантом было бы создать второй конструктор по форме и передать заголовок в:

public class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

public MainForm(string schoolName) : this()
{
this.Text = String.Format("Sistema {0} - Pagina Principal", schoolName);
}
}

Это может быть просто личное предпочтение, хотя.

Кроме того, можно дополнительно извлечь жестко заголовок формы в config или ресурсов, и вместо того, чтобы инстанцировать такой форме:

var titleFormat = ...; // retrieve format from some place
var schoolName = CustomizationHelper.GetSchoolName();
var form = new MainForm() { Text = string.Format(titleFormat, schoolName) };

Выигрыш от этого будет зависеть от того, насколько велика вероятность, что это изменится в будущем или или не вы планируете переводить приложения на другие языки.

9
ответ дан 25 января 2011 в 12:01 Источник Поделиться

Цель CustomizationHelper просто абстрагироваться окне configurationmanager/AppConfig вещи? Потому что иначе я бы просто палка с прямыми configurationmanager в звонок.

Чем меньше обручи, необходимо понять, что происходит, тем лучше в моей книге. Если вы когда-нибудь попасть SchoolName из другого источника (как сказать база данных).

В любом случае, имя класса, вероятно, может быть улучшено, может быть, что-то вроде "SchoolConfiguration" и "имя" собственность или "метод getname()" метод.

8
ответ дан 25 января 2011 в 01:01 Источник Поделиться

Представленный код выглядит нормально, нет никаких явных проблем с ним. CustomizationHelper могли, вероятно, использовать лучше имя, хотя, чтобы указать, что подгонять. Если это часть большого проекта, поставив комментарий, чтобы указать, какие классы являются, предполагают, чтобы использовать CustomizationHelper было бы хорошей идеей.

2
ответ дан 24 января 2011 в 11:01 Источник Поделиться