返回

c#-如果一个类具有另一个类的属性,如何判断内部类的属性是否匹配

发布时间:2022-08-09 15:57:16 277
# flask

我正在研究一种能够查看 2 个对象是否匹配的解决方案。重要的是,对于 2 个对象,如果它们共享一个属性,则这些属性的值是匹配的

对于两个类 SC 和 DI,Test 属性正确地评估为 True。但是 Little 类将评估为假,因为 SC 和 DI 使用 Little 对象的不同实例,即使 Little 类的信息是正确的。

namespace HelloWorld
{
    using System;
    using System.Reflection;

    public class Little
    {
        public string L1 { get; set; }
        public string L2 { get; set; }
    }
    
    public class Solution
    {
        public string Name { get; set; }
        public string Test { get; set; }
        public Little L {get; set; }
    }
    
    public class Device
    {
        public string Name { get; set; }
        public string Test { get; set; }
        public Little L {get; set; }
    }
    
    public class Program
    {
        static void Main(string[] args)
        {
            var Li = new Little {
                L1 = "L1111",
                L2 = "L2222"
            };
            var Li2 = new Little {
                L1 = "L1111",
                L2 = "L2222"
            };
            var SC = new Solution {
                Name = "SC",
                Test = "T1",
                L = Li2
            };
            var DI = new Device {
                Name = "DI",
                Test = "T1",
                L = Li
            };
            
            foreach (var property in SC.GetType().GetProperties())
            {
                var deviceProperty = DI.GetType().GetProperty(property.Name);
                if (deviceProperty != null)
                {
                    if (deviceProperty.GetValue(DI) != property.GetValue(SC))
                    {
                        // it is registered as flase since DI and SC have different Little objects - even though thouse object values are the same 
                        // Best way to determine if the values are of type Little (or any other me-defined class) - because wont .IsClass evaluate string to True as well?
                        // What if there was another class inside Litte? Do I have to recursively / loop until I can see everything is a string or int?
                    }
                    else
                    {
                        Console.WriteLine("We have a match");
                    }
                }
            }
        }
    }
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像