【发布时间】:2015-07-10 11:59:34
【问题描述】:
我想从 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 是一样的。
【问题讨论】:
-
不变性是一件美好的事情。 (虽然我知道这对你没有帮助......)
-
你打算在哪里使用这个?您是否将其传递给需要 MailAddress 的方法?
-
您可以公开一个
MailAddressBuilder,并使用一个返回MailAddress的附加方法Build()(是的,这是Builder 模式) -
是的,建造者模式是这里的解决方案。
-
@EBrown 当我使用参数构建类时,我想在 VB6 中使用它 public class Recipient : MailAddress { public Recipient(string address) : base(address) { } } VB6 向我显示消息“无效使用新关键字”在这句话中将 oRecipient 作为新的 SendMailSmtp.Recipient 和 VB6 显示消息“预期:语句结束”,当我尝试这个 Dim oRecipient As New SendMailSmtp.Recipient("address@domain.com")
标签: c# com default-constructor mailaddress