0

このディクショナリが保持している情報が多すぎるように感じます。電子メール パスを構築するための情報を保持し、電子メール テンプレートに必要な他のデータを取得するための追加のパラメータを保持しています。サンプル プログラムの簡易版を次に示します。

void Main()
{
    //Sample Path = Root/Action/TemplateX.txt
    //Date used in other method
    Dictionary<string,object> emailDict = new Dictionary<string,object>
    {
        {"Root","Email"},
        {"Action", "Update"},
        {"TemplateName", "TemplateX.txt"},
        {"Date", DateTime.Now},

    };

    //Create email object
    Email email = new Email();


    //Send e-mail with email dictionary
    email.SendEmail(emailDict);

}

// Define other methods and classes here
public class Email
{

    public void SendEmail(Dictionary<string,object> emailDict)
    {
        //Build path from emailDict and use parameters from emailDict
        //Send E-mail
    }

}

他に考慮すべきリファクタリングはありますか?

4

2 に答える 2

2

それは間違いなく a を悪用していDictionaryます。値を にすると、型の安全性がすべて失われ、例外やその他の多くの問題が発生する可能性がありobjectますInvalidCast。すべての値をクラスのプロパティに引き出すだけです。

public class EmailFields
{
    public string Root {get;set;}
    public string Action {get;set;}
    public string TemplateName {get;set;}
    public DateTime Date {get;set;}

    public EmailHelper
    {
        Date = DateTime.Now;
    }
}

次にSendEmail、メソッドはEmailFieldsオブジェクトをパラメーターとして受け取ります。

この時点から、おそらくenumforActionとも作成しTemplateNameます。

public enum Action
{
    Update,
}
public enum Template
{
    TemplateX,
}

そして、あなたのプロパティは

public Action EmailAction {get;set;}
public Template TemplateName {get;set;}
于 2013-10-24T03:00:32.300 に答える