加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:36:00 所属栏目:百科 来源:网络整理
导读:我第一次尝试仿制药,有问题. 我有一个dll批量发送消息 在该dll中有一个“消息”类和一个“批处理”类 在批次类上,我有一些公共属性 on的批次类的公共属性是一个名为“Messages”的属性,它是“Message”类的列表,如下所示: public ListMessage Messages {get
我第一次尝试仿制药,有问题.

我有一个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; } }

(不要搞乱构造函数等)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读