使用linq设置自定义属性类的值

时间:2019-06-23 11:45:32

标签: c# linq class

我必须使用反射来设置属性定制类的值。这是我必须得到的例子。

class Phone
{
    public detailsTelephone DetailsTelephone { get; set; } = new detailsTelephone();
}

class detailsTelephone
{
    public PhoneName PHONENAME { get; set; } = new PhoneName();
    public PhoneCover PHONECOVER { get; set; } = new PhoneCover();
}

class PhoneName
{
    public string LenghtName { get; set; } = string.Empty;
}

class PhoneCover
{
    public string ColorCover { get; set; } = string.Empty;
}

class Program
{
    static List<Phone> PhoneList = new List<Phone>();

    static void Main(string[] args)
    {
        PhoneList.Add(new Phone());

        detailsTelephone p = PhoneList.Last().DetailsTelephone;
        var property = typeof(detailsTelephone).GetProperty("PHONENAME");
        property.SetValue(p.PHONENAME.LenghtName, "1000", null);

        Console.WriteLine(PhoneList.Last().DetailsTelephone.PHONENAME.LenghtName);
        Console.ReadLine();
    }
}

我用项目中的真实结构更新了帖子。问题是我必须按名称查找第一个属性(PHONENAME),然后将PHONENAME.LenghtName设置为1000个属性。

谢谢。

1 个答案:

答案 0 :(得分:0)

问题出在(基于更新的OP)您的Phone类中。您尚未初始化DetailsTelephone属性。以下内容将帮助您解决错误。

class Phone
{
    public detailsTelephone DetailsTelephone { get; set; } = new detailsTelephone();
}