【发布时间】:2012-12-31 03:59:20
【问题描述】:
我的类继承了一个接口,所以我需要在 Person 类中有 emailaddress 属性。
我的问题是获取属性和设置属性的最佳方法是什么
public class Contact : IPerson, ILocation
{
...
[MaxLength(256)]
public string EmailAddress {
get{
return this.Emails.First().ToString();
}
set{ ???? }
}
....
public virtual ICollection<Emails> Emails { get; set; }
}
基本上,我正试图让班级允许多封电子邮件。
为了全面披露,我对此很陌生,我可能没有问正确的问题,但我已经搜索了一天半并且没有看到这样的东西(并不是我认为这很不寻常)并且可以利用洞察力。
电子邮件类属性:
[Key]
public int Id { get; set; }
[MaxLength(256)]
public string EmailAddress { get; set; }
【问题讨论】:
-
如果您想访问集合中的不同索引,getter 和 setter 是不够的。您将不得不编写一个带有某种索引作为参数的方法
-
从根本上说,拥有一个集合是不寻常的,但也有一个试图处理一个 single 值的属性。你希望它如何表现?如果我多次设置
EmailAddress属性,最终应该是一个地址还是多个?您希望它如何与设置Emails属性进行交互?实际的实现可能很简单——但你需要先弄清楚你想要什么行为。 -
我在联系人和他们的电子邮件之间有一对多(因此是集合)。因为我继承了一个接口,所以我不能排除 EmailAddress 属性(从接口中)。所以我不知道从哪里拿它。我可以忽略这个集合,只通过关系来做吗?
-
你不能“忽略”
set,如果它是由接口的实现所强制的。你能做的最好的就是让它在set正文中抛出一个NotImplementedException.不过它需要在那里..
标签: c# properties icollection