[不想重新发明轮子,是否有一个dotnet nuget库可以对对象进行递归检查以进行参数检查?
如果没有,我将如何转换代码以检查属性是否为null,以及是否可以保留其自身属性的类型,则递归检查该类型,并以属性名称列表结束。] >
public static class Assert
{
public static void AllPropertiesNotNull<T>(T obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
var emptyProperties = typeof(T)
.GetProperties()
.Select(prop => new { Prop = prop, Val = prop.GetValue(obj, null) })
.Where(val => IsEmpty((dynamic)val.Val))
.Select(val => val.Prop.Name)
.ToList();
if (emptyProperties.Count > 0)
throw new ArgumentNullException(emptyProperties.First());
}
private static bool IsEmpty(object o) { return o == null; }
}
[不想重新发明轮子,是否有一个dotnet nuget库可以对对象进行递归检查以进行参数检查?如果没有,我将如何转换代码以检查属性是否为...
为此,编写一种方法来检查当前对象的属性,并在非null属性上递归调用它。我继续写了一些代码,其中包括循环使用字典和可枚举并检查它们是否为空,同时考虑到@dcg提到的循环引用。
您可以为对象创建扩展方法ThorwOnNullProperty
,并像这样使用它:
something.ThorwOnNullProperty();