2016-06-28 16 views
0

私は2つの異なるクラスを持ち、クラスをNotify関数のパラメータとして使用したいと考えています。 ====コード======================
'メールクラス通知がパラメータクラスをパラメータとして受け取る汎用メソッド

Friend Class MailClass 
     Friend NotifyHost As String 
     Friend NotifyPort As String  
End Class 

' FTPクラスの通知が

パラメータ
Friend Class FtpClass  
    Friend NotifyHost As String  
    Friend NotifyPort As String   
    End Class  


Friend Class ProcessNotification  
    'Notify on FTP Specified Email    
    Private Sub btnMailNotiFy_Click(ByVal sender As System.Object, ByVal e As  System.EventArgs)  
    Notify (ByRef mailAccount as MailClass)  
    End Sub 

    'Notify on FTP Specified Email 
    Private Sub btnFTPNotiFy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Notify (ByRef ftpAccount as FtpClass) 
    End Sub 

    ' Generic method to use for multiple class 
    Private Sub Notify(NO Idea ??) 
    ' ## Please Help ### 
    End Sub 
End Class 

通知方法の作成一般的ですか?

答えて

0

メモリが使用されている場合、genericsは2.0以降の.Netの一部です。
このようなものをお探しですか?

Private Sub Notify(Of T as Class)(ByVal agr as T) 
' do stuff 
End Sub 

更新

コメントで我々の議論の後、あなたはあなたのジェネリックメソッドの内部で使用するすべてのプロパティとメソッドを指定し、としてそれを使用するインターフェイスを作成する必要があります一般的な制約:もちろん

Friend Interface IMyInrteface 
    NotifyHost As String 
    NotifyPort As String 
End Interface 

Private Sub Notify(Of T as IMyInrteface)(ByRef agr as T) 
' do stuff 
End Sub 

、あなたがこのメソッドに送信するすべてのクラスがインタフェースを実装する必要があります

Friend Class MailClass 
    Implements IMyInrteface 
    Friend NotifyHost As String 
    Friend NotifyPort As String  
End Class 

Friend Class FtpClass  
    Implements IMyInrteface 
    Friend NotifyHost As String  
    Friend NotifyPort As String   
End Class 
+0

私はこれを試しましたが、エラーが発生しました。 'NotifyHostはTのメンバーではありません。' – monikapatel

+0

あなたの質問を編集して今すぐあなたのコードを含めてください。また、NotifyメッセージがByValではなくT ByRefを受け入れるはずです。 –

+0

私はNotify(Tのクラスとして)(ByRefアカウントTとして)を使用する場合、account.NotifyHostを使用することはできませんエラーを取得NotifyHostはTのメンバーではない。私はパラメータとして複数のクラスのジェネリックメソッドを使用したい私はあなたのコードを使用してクラスのプロパティにアクセスできますか? – monikapatel

関連する問題