-1

MailAddress クラスから継承して COM 可視クラスにしたいのですが、MailAddress にはパラメーターなしのコンストラクターがなく、COM にはコンストラクターに引数を渡すメカニズムがありません。

https://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress%28v=vs.110%29.aspx

だから、私はこのようなクラスを作成する必要があり、それを作成して後でそのプロパティを変更することを考えています:

public class Recipient : MailAddress
{
    public Recipient()
        : base("")//this is the contructor that takes less parameters, but can also add the other contructor parameters here
    {

    }
}

しかし、すべて読み取り専用であるため、そのプロパティを変更できないことに気付きました

読み取り専用である理由を知っている人はいますか? そして、クラス Attachment も同様に作成されます。

4

1 に答える 1

2

MailAddress クラスは不変パターンを使用するため、インスタンスが作成されると変更できません (このパターンにはいくつかの利点があります。とりわけ、ロックの競合がないため、スレッド化に大いに役立つためです)。問題)。

ただし、Message タイプ (to、from、cc コレクション) に配置されるコレクションは変更できます。そのため、それらのいずれかから既存の MailAddress インスタンスをいつでも削除してから、変更された値に置き換える新しい MailAddress クラスを作成できます。

お役に立てれば、

于 2015-04-30T17:03:19.640 に答える