Nil*_*ils 9 c# generics properties
我是第一次尝试仿制药而且遇到了问题.
我有一个dll批量发送消息
该DLL中有一个"Message"类和一个"Batch"类
在批次类上,我有一些公共属性
批处理类的公共属性是一个名为"Messages"的属性,它是"Message"类的列表,如下所示:
public List<Message> Messages {get;set;}
Run Code Online (Sandbox Code Playgroud)方法1
然后我有一个测试exe,我想在"Batch"类上设置属性,如下所示:
Batch myBatch = new Batch()
myBatch.Messages.Add(
new MyNameSpace.Message(txtToAddress.Text, txtMessage.Text));
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我得到:
"你调用的对象是空的."
方法2
玩了一下后,我看到我可以在测试exe中成功完成以下操作:
List<MyNameSpace.Message> myMessages = new List<MyNameSpace.Message>();
myBatch.Messages.Add(
new MyNameSpace.Message(txtToAddress.Text, txtMessage.Text));
myBatch.Messages = myMessages;
Run Code Online (Sandbox Code Playgroud)
我想让它以第一种方式工作,因为其他程序员将使用dll,并且使用第一种方法似乎更直观.
为了让第一种方法起作用,我错过了什么?
Mar*_*ell 20
通常,集合由父对象初始化:
public List<Message> Messages {get; private set;}
public Batch() { // constructor
Messages = new List<Message>();
}
Run Code Online (Sandbox Code Playgroud)
现在它应该按预期工作.请注意,如果您正在使用,则XmlSerializer需要保留公共设置...
在某些方面,这里的长手资产代码更容易:
private List<Message> messages = new List<Message>();
public List<Message> Messages { get {return messages; } }
Run Code Online (Sandbox Code Playgroud)
(没有弄乱构造函数等)
| 归档时间: |
|
| 查看次数: |
32683 次 |
| 最近记录: |