gpt4 book ai didi

c# - 动态地向复杂数据类型添加属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:16 25 4
gpt4 key购买 nike

我正在使用 C# 编写一个具有如下属性的类

public class SummaryDto
{
public string Name { get; set; }
public string GenericName { get; set; }
public int Data2012 { get; set; }
public int Data2013 { get; set; }
public int Data2014 { get; set; }
public int Data2015 { get; set; }
public int Data2016 { get; set; }
public int Data2017 { get; set; }

}

在上面的类中,属性 Data2012、Data2013 等应该根据另一个只包含年份的对象中的数据动态添加。我可以知道一个好的方法吗?

最佳答案

public class SummaryDto
{
public string Name {get; set;};
public string GenericName {get; set; }
public Dictionary<int,int> Data {get; } = new Dictionry<int,int>();
}

然后添加一年的数据

void SetYear(int year, int n)
{
var s = new SummaryDto();
s.Data[year] = n;
}

如果因为对返回数据的方式有一些限制而不想要列表,请将列表包装在它自己的类中:

class YearData 
{
List<int, int> _data = new List<int, int>();

public int GetYearData(int year)
{
AssertYearValid(year);
return _data[year];
}

public void SetYearData(int year, int number)
{
AssertYearValid(year);
AssertYearNumberValid(number);
_data[year] = number;
}

private void AssertYearValid(int year)
{
if (year < 1900 || year > 2900)
{
throw new ArgumentException("Year is not valid.");
}
}
}


public class SummaryDto
{
public string Name {get; set;};
public string GenericName {get; set; }
public YearData Data {get; } = new YearData();
}

并设置为

var s = new SummaryDto();
s.SetYearData(2001, 100);

关于c# - 动态地向复杂数据类型添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com