2016-01-24 6 views
0

Я занят созданием быстрого небольшого приложения WinForms, которое позволяет редактировать предоставленный файл app.config. Я создал обертку вокруг класса System.Configuration.Configuration, отображая только те свойства, которые я хочу изменить. Я сделал AppSettings и ConnectionStrings (используя SqlConnectionStringBuilder), и теперь я перехожу на system.net/mailSettings.Добавить конфигурационный файл MailSettings в PropertyGrid

Вот суть моей нынешней структуры:

public class ServerConfigFile : ConfigFile 
{ 
    ... 
    [Category("Database Connection Settings")] 
    [DisplayName("Connection String")] 
    [RefreshProperties(RefreshProperties.All)] 
    [Description("The connection string used to connect to the datasource. Default is \"(LocalDB)\\v11.0\"")] 
    public ConnectionStringBuilderFacade ConnectionString { get; private set; } 
    ... 

    protected override void ReloadProperties() 
    { 
     this.ConnectionString = new ConnectionStringBuilderFacade(this.UnderlyingConfig.ConnectionStrings.ConnectionStrings["EntitiesContainer"]); 
     ... 
     this.MailSettings = this.UnderlyingConfig.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 
    } 
} 

public abstract class ConfigFile 
{ 
    protected Configuration UnderlyingConfig { get; private set; } 
    ... 
    public void RefreshFromFile(string exeFile) 
    { 
     this.UnderlyingConfig = ConfigurationManager.OpenExeConfiguration(exeFile); 
     this.ReloadProperties(); 
    } 

    protected abstract void ReloadProperties(); 
} 

Я был в состоянии к источнику MailSettings из конфигурационного файла:

this.MailSettings = this.UnderlyingConfig.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 

, но так как это должно было быть быстрое приложение , Я не совсем готов инвестировать время, чтобы выписать целый TypeConverter и UITypeEditor только для одного небольшого раздела.


Можно видеть, что то, что нужно есть - настройки SMTP, способы доставки, места съемки (если способ доставки specifiedDirectory), SSL, имя пользователя, пароль ...

Мой вопрос: является есть ли какой-либо существующий редактор PropertyGrid для MailSettings, который я могу подключить и играть, или мне нужно укусить пулю и развернуть мою собственную, или у вас прекрасные люди имеют для меня еще лучшее решение?

ответ

0

Таким образом, я закончил развертывание своего собственного удачного решения. Я сопоставил свойства в классе MailSettingsSectionGroup в моем собственном классе конфигурации и просто работал с ним. что-то вроде ниже:

[Browsable(false)] 
public MailSettingsSectionGroup MailSettings { get; private set; } 

[Category(MailSettingsCategory)] 
[DisplayName("Pickup Directory Location")] 
[RefreshProperties(RefreshProperties.All)] 
[Description("The folder where to save email messages to be processed by an SMTP server.")] 
[Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 
public string SmtpPickupDirectoryLocation 
{ 
    get 
    { 
     return this.MailSettings.Smtp.SpecifiedPickupDirectory.PickupDirectoryLocation; 
    } 

    set 
    { 
     this.MailSettings.Smtp.SpecifiedPickupDirectory.PickupDirectoryLocation = value; 
    } 
} 
... 

Выход:

Mail Settings config