![](/img/trans.png)
[英]What is the best way to implement a Must Set Property for a Base class?
[英]Best approach for initialising a class with a property that must exist
示例类
public class Company {
public Details Details { get; set; }
public List<Employeee> Employees { get; set; }
public Company() {
}
}
public class Details {
public string Name { get; set; }
public string Url { get; set; }
public Details() {
}
}
代码中某处的用法...
var c = new Company();
c.Details = new Details();
c.Details.Name = "Example";
c.Details.Url = "http://example.org/";
没有细节的公司是没有意义的。
我的一个想法是
这似乎是一个常见问题,我想知道是否有一种标准的方法来处理它,这将导致可测试的类。 我不确定要搜索什么。
如果我理解正确,我认为最好的方法是仅创建一个以Details
作为参数的构造函数。
例子:
public class Company
{
public Details Details { get; set; }
public List<Employeee> Employees { get; set; }
public Company(string Name, string Url)
{
this.Details = new Details(Name, Url);
}
public Company(Details Details)
{
this.Details = Details;
}
}
public class Details
{
public string Name { get; set; }
public string Url { get; set; }
public Details(string Name, string Url)
{
// If the validation fails, throw an error
if (string.IsNullOrWhiteSpace(Name))
throw new ArgumentException($"'{nameof(Name)}' cannot be null or empty", nameof(Name));
if (string.IsNullOrWhiteSpace(Url))
throw new ArgumentException($"'{nameof(Url)}' cannot be null or empty", nameof(Url));
this.Name = Name;
this.Url = Url;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.