gpt4 book ai didi

用作属性的 C# 泛型对象列表 - 无法添加值

转载 作者:太空狗 更新时间:2023-10-29 17:31:53 25 4
gpt4 key购买 nike

我是第一次尝试泛型,但遇到了问题。

我有一个批量发送消息的dll

  • 那个dll中有一个“Message”类和一个“Batch”类

  • 在批处理类上,我有一些公共(public)属性

  • 批处理类的公共(public)属性中有一个名为“消息”的属性,它是“消息”类的列表,如下所示:

     public List<Message> Messages {get;set;}

方法一

然后我有一个测试 exe,我想在其中设置“批处理”类的属性,如下所示:

Batch myBatch = new Batch()
myBatch.Messages.Add(
new MyNameSpace.Message(txtToAddress.Text, txtMessage.Text));

当我运行应用程序时,我得到:

“对象引用未设置到对象的实例。”

方法二

玩了一会儿之后,我发现我可以在测试 exe 中成功执行以下操作:

List<MyNameSpace.Message> myMessages = new List<MyNameSpace.Message>();
myBatch.Messages.Add(
new MyNameSpace.Message(txtToAddress.Text, txtMessage.Text));
myBatch.Messages = myMessages;

我想让它以第一种方式工作,因为其他程序员将使用该 dll,而且使用第一种方式似乎更直观。

要使第一种方法起作用,我缺少什么?

最佳答案

通常,集合由父对象初始化:

public List<Message> Messages {get; private set;}

public Batch() { // constructor
Messages = new List<Message>();
}

现在它应该可以正常工作了。请注意,如果您使用的是 XmlSerializer,您也需要保留公共(public)集...

在某些方面,长手属性代码在这里更容易:

private List<Message> messages = new List<Message>();
public List<Message> Messages { get {return messages; } }

(不要弄乱构造函数等)

关于用作属性的 C# 泛型对象列表 - 无法添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833442/

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