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

前端之家收集整理的这篇文章主要介绍了用作属性的对象的C#泛型列表 – 无法添加值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我第一次尝试仿制药,有问题.

我有一个dll批量发送消息

>在该dll中有一个“消息”类和一个“批处理”类
>在批次类上,我有一些公共属性
> on的批次类的公共属性是一个名为“Messages”的属性,它是“Message”类的列表,如下所示:

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

方法1

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

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

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

“你调用的对象是空的.”

方法2

在玩了一下之后,我看到我可以在测试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,您还需要保持公共集合

在某些方面,长期的财产代码在这里更容易:

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

(不要搞乱构造函数等)

猜你在找的C#相关文章