.NET 如何判断一个对象中是否包含NULL值?

做接口开发的时候,接口本身的请求参数中是不允许包含NULL的。所以想利用反射写一个通用的判断方法,能够递归识别类A的对象中所有公开的属性值是否为NULL,现在的问题是,当... 做接口开发的时候,接口本身的请求参数中是不允许包含NULL 的。

所以想利用反射写一个通用的判断方法,能够递归识别类A的对象中所有公开的属性值是否为NULL,
现在的问题是,当类B作为类A的属性时,【没想到什么好的方法,在判断A的同时,递归识别B对象内部的属性是否含有NULL】 . 困扰中,特此请教各位大神指点。
展开
 我来答
晏傲易6L
2018-10-11
知道答主
回答量:11
采纳率:0%
帮助的人:7626
展开全部

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;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
推荐于2016-03-16 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7792万
展开全部

这样你看行不行?

    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时,还是达不到预期效果的。 
下午又花了一段时间琢磨了下,可惜没办法贴出来。。。 含有特殊字符,屏蔽了。。
追答
恩,递归这个我确实没实现。究竟是什么需求呢?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式