2008-11-13 3 views
0

는 내가 그 보낸 때문에 스텝 기능을 활용하는 것이 좋습니다 인터페이스 또는 경우 MustInherit 클래스가 있는가수업을위한 단계별 이벤트를 만들기 위해 어떤 인터페이스를 구현해야합니까?

Dim sender As New EmailSender(emailTemplate) 
While sender.Send() 
    Response.Write(sender("HTMLContent")) 
End While 

에 따라 내가 할 수 있도록 데이터 리더 클래스에 있지만, 맞춤형 이메일 전송 시스템 프로그램에 대한 유사한 동작을 만들려면 .Send() 명령은 전송할 다음 전자 메일을 준비하고 존재하면 true를 반환합니다.

답변

1

아니오 - 당신이 할 일은 보내기 위해 다음 이메일을 준비하는 보내기() 메소드를 구현하고 당신이 아마 반복자에 사용 IEnumerable 인터페이스 생각하고

을 존재하는 경우 true를 반환하지만, 당신이 원하는 것을 필요로하지 마라.

+0

충분히 공정하게 - 내가 작성한 코드를 게시 할 것입니다. – digiguru

0

내 솔루션은 내 자신의 인터페이스를 사용하고 이메일 발신자를위한 기본 클래스를 작성한 다음 구체적인 클래스에 대한 의사 코드를 제공한다.

Namespace Emailer 

     Public Interface IBatchableEmailSender 
      Function SendNextEmail() As Boolean 
      Sub PrepareBatchEmail() 
      Property EmailOutput() As EmailOutput 
     End Interface 

     Public MustInherit Class BaseBatchEmailSender 
      Implements IBatchableEmailSender 

      Private _emailOutput As EmailOutput 
      Public Property EmailOutput() As EmailOutput Implements IBatchableEmailSender.EmailOutput 
       Get 
        Return _emailOutput 
       End Get 
       Set(ByVal value As EmailOutput) 
        _emailOutput = value 
       End Set 
      End Property 
      Public MustOverride Sub PrepareBatchEmail() Implements IBatchableEmailSender.PrepareBatchEmail 
      Public MustOverride Function SendNextEmail() As Boolean Implements IBatchableEmailSender.SendNextEmail 

      Public Sub New() 
       PrepareBatchEmail() 
      End Sub 

     End Class 
Public Class BatchCustomerEmail 
     Inherits BaseBatchEmailSender 

     Private EmailItems As New Generic.List(Of EmailItem) 
     Private EmailItemNumber As Integer 
     Private NextEmailItem As EmailItem 

     Protected Class EmailItem 
      Public MemberID As Integer 
      Public Sub New(ByVal memberID As Integer) 
       Me.MemberID = memberID 
      End Sub 
     End Class 

     Public Overrides Function SendNextEmail() As Boolean 
      Dim hasEmail As Boolean = EmailItemNumber < EmailItems.Count 
      If hasEmail Then 
       ' Run script to send email 
       ' If necessary mark email as sent in the database   
       EmailItemNumber = EmailItemNumber + 1 
      End If 
      Return hasEmail 

     End Function 

     Public Overrides Sub PrepareBatchEmail() 
      ' 
      ' Creates a Generic.List(of EmailItems) to email. 
      ' 
      EmailItemNumber = 0 
     End Sub 


    End Class 


    Public Class EmailOutput 
     Private _text As String 

     Public Property Text() As String 
      Get 
       Return _text 
      End Get 
      Set(ByVal value As String) 
       _text = value 
      End Set 
     End Property 
     Private _html As String 
     Public Property HTML() As String 
      Get 
       Return _html 
      End Get 
      Set(ByVal value As String) 
       _html = value 
      End Set 
     End Property 
     Private _error As String 
     Public Property ErrorMessage() As String 
      Get 
       Return _error 
      End Get 
      Set(ByVal value As String) 
       _error = value 
      End Set 
     End Property 
     Public Sub New(ByVal errorMesage As String, ByVal html As String, ByVal text As String) 
      Me.ErrorMessage = errorMesage 
      Me.HTML = html 
      Me.Text = text 
     End Sub 
    End Class 

End Namespace 
+0

답변을 게시하는 대신 원래 질문을 편집해야합니다. –

관련 문제