我正在编写一个小型库,在其中编写一些接口,该接口需要一个MailMessage对象,并使用单个send方法将类返回给我,该方法抽象出如何发送MailMessage。我可以控制实际发送的类,但不能控制实现策略的类。我想防止任何实现策略类更改MailMessage。如何使MailMessage(及其包含的集合)不可变或创建其副本?我没有像在其他类上那样在MailMessage本身上看到.Clone方法。我是否必须要重新建立一个新的MailMessage对象并对该新MailMessage进行逐个属性设置?

注意,我主要是Java的人,正在帮助客户使用C#2.0代码,因此对于这样的事情我不太熟悉C#/。NET习惯用语。任何帮助表示赞赏。

最佳答案

我认为没有快速的解决方案。 MailMessage是继承可变的,不能克隆或序列化/反序列化。如果需要确保没有人可以更改它,请不要缓存它,而要定义一个类,该类保存消息值的副本,并根据该实例创建新的MailMessage实例。

关于c# - 在.NET/C#中克隆或使MailMessage不可变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5219931/

10-10 17:11