微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用作属性的对象的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; } }

(不要搞乱构造函数等)

原文地址:https://www.jb51.cc/csharp/95155.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐