gpt4 book ai didi

c# - 你调用的对象是空的。 C# 获取属性()

转载 作者:行者123 更新时间:2023-11-30 13:37:50 30 4
gpt4 key购买 nike

我有一个控制台应用程序,我试图在其中动态获取对象属性的值:

  class Program
{
static void Main(string[] args)
{
DtoCartaCompromiso test = new DtoCartaCompromiso() { CodProducto = 1,
DescProducto = "aaa",
CodProveedor = 2,
DescProveedor = "bbb",
FechaExpiracion = DateTime.Now,
FechaMaxEntrega = DateTime.Now,
NumLote = "22" };

var testlist = new List<DtoCartaCompromiso>();
testlist.Add(test);

List<Header> columns = new List<Header>() { new Header{Name= "CodProducto"},new Header{Name= "NumLote"},new Header{Name= "DescProducto"},new Header{Name= "CodProveedor"},new Header{Name= "DescProveedor"},new Header{Name= "FechaExpiracion"},new Header{Name= "FechaExpiracion"},new Header{Name= "FechaMaxEntrega"} };

foreach (var d in testlist)
{
foreach (var col in columns)
{
string value = ((d.GetType().GetProperty(col.Name).GetValue(d, null)) ?? "").ToString();
Console.WriteLine(value);
}
}
Console.Read();
}
}

public class DtoCartaCompromiso
{
public int CodProducto;
public string NumLote;
public string DescProducto;
public int CodProveedor;
public string DescProveedor;
public Nullable<DateTime> FechaExpiracion;
public Nullable<DateTime> FechaMaxEntrega;
}

public class Header
{
public string Name;
}

当我到达该行时出现错误“对象引用未设置到对象的实例”:

string value = ((d.GetType().GetProperty(col.Name).GetValue(d, null)) ?? "").ToString();

当我到达GetProperty() 方法时似乎发生错误,但我不明白为什么

最佳答案

问题是您的类中没有属性,它们实际上是公共(public)字段。公共(public)属性(property)看起来像

public string PropertyName { get; set; }

但在您的情况下,缺少 getter 和 setter。

GetProperty() 更改为 GetField(),它将起作用。或者使您的字段属性。就个人而言,我会选择第二个选项,因为使用属性而不是公共(public)字段是更好的主意。

关于c# - 你调用的对象是空的。 C# 获取属性(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20360768/

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