0

提供された app.config ファイルを編集できる簡単な小さな WinForms アプリを構築するのに忙しいです。クラスのラッパーを作成し、System.Configuration.Configuration変更したいプロパティのみを公開しました。AppSettingsConnectionStrings(を使用して)を実行しましたがSqlConnectionStringBuilder、現在は に移動してsystem.net/mailSettingsいます。

私の現在の構造の要点は次のとおりです。

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;

しかし、これは簡単なアプリであることを意図していたので、1 つの小さなセクションのためだけに TypeConverter と UITypeEditor 全体を書き出すのに時間を費やす準備ができていません。


必要なものは、smtp 設定、配信方法、受け取り場所 (配信方法が指定されている場合はディレクトリ)、ssl、ユーザー名、パスワード... であることがわかります。

私の質問:プラグ アンド プレイできる MailSettings 用の既存の PropertyGrid エディターはありますか?それとも、弾丸をかじって独自のものを展開する必要がありますか?

4

1 に答える 1

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;
    }
}
...

出力:

メール設定の構成

于 2016-01-28T07:53:36.093 に答える