.NET 如何判断一个对象中是否包含NULL值?
做接口开发的时候,接口本身的请求参数中是不允许包含NULL的。所以想利用反射写一个通用的判断方法,能够递归识别类A的对象中所有公开的属性值是否为NULL,现在的问题是,当...
做接口开发的时候,接口本身的请求参数中是不允许包含NULL 的。
所以想利用反射写一个通用的判断方法,能够递归识别类A的对象中所有公开的属性值是否为NULL,
现在的问题是,当类B作为类A的属性时,【没想到什么好的方法,在判断A的同时,递归识别B对象内部的属性是否含有NULL】 . 困扰中,特此请教各位大神指点。 展开
所以想利用反射写一个通用的判断方法,能够递归识别类A的对象中所有公开的属性值是否为NULL,
现在的问题是,当类B作为类A的属性时,【没想到什么好的方法,在判断A的同时,递归识别B对象内部的属性是否含有NULL】 . 困扰中,特此请教各位大神指点。 展开
2个回答
展开全部
public static string AnyPropertyIsNull<T>(T t) where T : class
{
PropertyInfo[] rs = t.GetType().GetProperties();
foreach( PropertyInfo prop in rs )
{
PropertyInfo Info = typeof(T).GetProperty(prop.Name);
object value =Info.GetValue(t);
if( value == null )
{
return string.Format("Property: {0}, null value!", prop.Name);
}
}
return null;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样你看行不行?
class Program
{
static void Main(string[] args)
{
A a = new A();
a.b = new B();
foreach (var pi in typeof(A).GetProperties())
{
object v = pi.GetValue(a, new object[] { });
//输出值为null的属性名称
if (v == null)
Console.WriteLine(pi.Name);
}
Console.ReadLine();
}
}
public class A
{
public B b { get; set; }
}
public class B
{
}
追问
我看了下,其实并没有解决我提出来的问题, 贴出来的代码仅仅只是校验了A对象中的B属性本身是否为NULL ,当B属性不为NULL ,但是B对象的其他属性为NULL时,还是达不到预期效果的。
下午又花了一段时间琢磨了下,可惜没办法贴出来。。。 含有特殊字符,屏蔽了。。
追答
恩,递归这个我确实没实现。究竟是什么需求呢?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询