是否有一种更优雅的方法来确保构造函数总是以至少一个值调用,而不是我在这里得到的值?我已经这样做了,因为我希望编译器错误,如果没有提供的值。
public class MyClass
{
private readonly List<string> _things = new List<string>();
public string[] Things { get { return _things.ToArray(); } }
public MyClass(string thing, params string[] things)
{
_things.Add(thing);
_things.AddRange(things);
}
}编辑
根据评论,我把代码改成了.
public class Hypermedia : Attribute
{
private readonly Rel[] _relations;
public IEnumerable<Rel> Relations { get { return _relations; } }
public Hypermedia(Rel relation, params Rel[] relations)
{
var list = new List<Rel> {relation};
list.AddRange(relations);
_relations = list.ToArray();
}
}很抱歉之前为了隐藏我想要做的事情而编辑了代码。直接从我的代码编辑器中粘贴就更容易了!
发布于 2013-03-27 10:53:29
那Code Contracts呢
public MyClass(params string[] things)
{
Contract.Requires(things != null && things.Any());
_things.AddRange(things);
}代码契约包括标记代码的类、用于编译时分析的静态分析器和运行时分析器。
至少你会从静态分析器那里得到警告。您可以在发布模式下关闭运行时分析,以避免性能受到影响。
发布于 2013-03-27 10:48:09
我相信您正在寻找RequiredAttribute (可从.NET 3.5开始使用)。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.requiredattribute.aspx。
https://stackoverflow.com/questions/15656925
复制相似问题