我正在寻找一种处理一系列对象的好方法,所以问题出在 GetMessage 中,如果我使用底层流的 using 语句来创建附件...在方法 1 中,当我去发送邮件消息时附件的流已被处理,并将收到错误。如果我取消 using 语句,它可以找到但我没有正确处理 DataStream Dest。我最初的想法是在方法一中添加一个参数列表,每次调用 GetMessage 时我都可以将其添加到 Dest 中,并在方法末尾的方法 1 中通过列表来处理流。SendMessage 可以从批处理过程中循环调用,因此可能会创建许多流,我想将其留给调用者(SendMessage)来处理它们,而不是在 GetMessage 中,因为 SendMessage 是发送发生的地方,我需要确保消息在处理前已发送。有什么建议么???
void sendMessage(MessageType type){
MailMessage m = Method2();
switch(type)
{
case type1:
m = Object1().GetMessage(param1)
case type2:
m = Object2().GetMessage(param1, param2)
case type3:
m = Object3().GetMessage(param1)
case type4:
m = Object4().GetMessage(param1, param2, param3)
case NewType5:
m = NewType5().GetMessage(param1, param2)
}
// this method does the send cause it has the mailmessage
m.Send();
}
class NewType5()
{
MailMessage GetMessage(){
// used to be
// using (var Dest = new DataStream(true)){ .... }
DataStream Dest = new DataStream(true);
// code that reads info into the stream
// Go back to the start of the stream
Dest.Position = 0;
// Create attachment from the stream
Attachment mailattachement = new Attachment(Dest, contentType);
//Create our return value
var message = new MailMessage();
message.To.Add(UserInfo.UserDetail.Email);
message.Subject = "P&L Data View - " + DateTime.Now.ToString();
message.Attachments.Add(mailattachement);
return message;
}
}
要将发送移动到 GetMessage,我必须更改所有其他对象上的所有其他对象实现。我宁愿让 send message 处理 newtype5 的处理,因为从批处理过程中它可以被调用 500 次。这是否使示例更加清晰。Send Message 已经被编写了一个实现,针对的是具有 GetMessage 实现的其他几个对象。我的恰好使用了一个流,在发送之前我无法处理流。