日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解讀.Net實(shí)現(xiàn)程序的插件機(jī)制_.Net教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:解讀軟件系統(tǒng)與軟件系統(tǒng)之間的集成交互問(wèn)題
可能寫(xiě)得有些亂,希望能諒解,同時(shí)我整理的思想,希望能給您帶來(lái)一些啟發(fā)或者幫助。 我們假設(shè)一個(gè)國(guó)際化的大公司里,有來(lái)自多個(gè)國(guó)家的員工,這些員工又工作在不同的部門(mén)里,負(fù)責(zé)不同的任務(wù)。 首先: 1. 這些人可能是白人,也可能是黑人,也可能是黃皮膚的我

使用asp.net或vb.net或C#.net均可以實(shí)現(xiàn)插件的功能,插件的作用是對(duì)系統(tǒng)的后期未知擴(kuò)展預(yù)留快速升級(jí)的空間!插件開(kāi)發(fā)完成后將以DLL的形式發(fā)布到特定的文件夾中,例如主程序文件夾是D:\myApp\myApp.exe,我們可以在D:\myApp中定義文件夾D:\myApp\Plus目錄來(lái)存放插件。

在程序中通過(guò)遍歷該文件夾中的所有DLL檢測(cè)符合預(yù)定接口的插件來(lái)實(shí)現(xiàn)動(dòng)態(tài)裝載相應(yīng)的功能模塊!

下面舉例:

一、定義接口
新建解決方案用于生成此接口

 1 Public Class IPlugin
 2     Public Interface IPlugin
 3         Property MovementID() As Integer
 4         Property MovementName() As String
 5         Property ReTryMinute() As Integer
 6         Property ConnectionString() As String
 7         Event RaiseLog(ByVal log As String)
 8         Sub Init()
 9     End Interface
10 End Class
11 

 

二、編寫(xiě)繼承自該接口的自定義組件(將編譯成DLL)

該操作您需要新建一個(gè)解決方案

  1Imports System.Data
  2Imports System.Data.SqlClient
  3Imports System.Net
  4Imports System.IO
  5Imports na7Interface.IPlugin
  6
  7Public Class recv
  8
  9    Implements IPlugin '實(shí)現(xiàn)此接口
 10
 11    '構(gòu)造屬性變量
 12    Private _MovementID As Integer = 27
 13    Private _MovementName As String = "51麥克瘋"
 14    Private _SpanMinute As Integer = 30
 15    Private _ConnectionString As String = ""
 16
 17    Private Fir As String = "活動(dòng):" + MovementName + "(" + MovementID.ToString + ")"
 18
 19    ''' <summary>
 20    ''' 返回內(nèi)部處理的消息,實(shí)現(xiàn)接口中的RaiseLog事件。
 21    ''' </summary>
 22    ''' <param name="logText"></param>
 23    ''' <remarks></remarks>

 24    Public Event RaiseMyEvent(ByVal logText As StringImplements IPlugin.RaiseLog
 25
 26    ''' <summary>
 27    ''' 調(diào)用此方法!
 28    ''' </summary>
 29    ''' <remarks></remarks>

 30    Public Sub Init() Implements IPlugin.Init '繼承自接口的Init方法。
 31        '這里放置數(shù)據(jù)抓取及相關(guān)的處理程序。
 32         '實(shí)際應(yīng)用中要根據(jù)您的程序何時(shí)調(diào)用Init決定,這不是必須的方法
 33        ResultText("處理完成!")
 34    End Sub

 35
 36    Private Sub SaveSetups(ByVal savedate As StringByVal UserID As StringByVal WebId As StringByVal Setups As String)
 37        '定義該內(nèi)部方法,這個(gè)方法不實(shí)現(xiàn)任何接口中的方法。因此只在本類內(nèi)部實(shí)現(xiàn)。
 38        Dim CmdText As String = ""
 39    End Sub

 40
 41    ''' <summary>
 42    ''' 返回八位數(shù)字的日期格式
 43    ''' </summary>
 44    ''' <param name="dt"></param>
 45    ''' <returns></returns>
 46    ''' <remarks></remarks>

 47    Private Function ClongDate(ByVal dt As DateAs String '同上
 48        Dim mm As String = dt.Month.ToString
 49        If mm.Length = 1 Then mm = "0" + mm
 50        Dim dd As String = dt.Day.ToString
 51        If dd.Length = 1 Then dd = "0" + dd
 52        Return dt.Year.ToString + "" + mm + dd
 53    End Function

 54
 55    Private Function ConvDate(ByVal dt As LongAs String '同上
 56        Dim YY As String = Mid(dt.ToString, 14)
 57        Dim MM As String = Mid(dt.ToString, 52)
 58        Dim DD As String = Mid(dt.ToString, 72)
 59        Return YY + "-" + MM + "-" + DD + " 00:00:00"
 60    End Function

 61
 62    ''' <summary>
 63    ''' 獲得此組件處理的活動(dòng)ID,該屬性實(shí)現(xiàn)了接口IPlugin的MovementID屬性。
 64    ''' </summary>
 65    ''' <value></value>
 66    ''' <returns></returns>
 67    ''' <remarks></remarks>

 68    Public Property MovementID() As Integer Implements IPlugin.MovementID
 69        Get
 70            Return _MovementID
 71        End Get
 72        Set(ByVal value As Integer)
 73            _MovementID = value
 74        End Set
 75    End Property

 76
 77    ''' <summary>
 78    ''' 獲得此組件的活動(dòng)名稱,同上
 79    ''' </summary>
 80    ''' <value></value>
 81    ''' <returns></returns>
 82    ''' <remarks></remarks>

 83    Public Property MovementName() As String Implements IPlugin.MovementName
 84        Get
 85            Return _MovementName
 86        End Get
 87        Set(ByVal value As String)
 88            _MovementName = value
 89        End Set
 90    End Property

 91
 92    ''' <summary>
 93    ''' 獲得此組件定時(shí)調(diào)用的間隔分鐘數(shù),實(shí)現(xiàn)自定義屬生ReTryMinute
 94    ''' </summary>
 95    ''' <value></value>
 96    ''' <returns></returns>
 97    ''' <remarks></remarks>

 98    Public Property SpanMinute() As Integer Implements IPlugin.ReTryMinute
 99        Get
100            Return _SpanMinute
101        End Get
102        Set(ByVal value As Integer)
103            _SpanMinute = value
104        End Set
105    End Property

106
107    Public Property ConnectionString() As String Implements IPlugin.ConnectionString
108        Get
109            Return _ConnectionString
110        End Get
111        Set(ByVal value As String)
112            _ConnectionString = value
113        End Set
114    End Property

115
116    Public Sub ResultText(ByVal txt As String)
117        '響應(yīng)事件
118        RaiseEvent RaiseMyEvent(txt)
119    End Sub

120End Class

121

 

三、在程序中調(diào)用定義的接口
     注意:程序中定義接口編譯生成的DLL必須使用同一個(gè),否則如果不是使用相同的DLL,即使DLL的內(nèi)容相同,同樣也會(huì)產(chǎn)生錯(cuò)誤。

 

分享:如何創(chuàng)建安全的Web應(yīng)用程序
把一個(gè)問(wèn)題說(shuō)清楚,是要有前提的,也要大家有一些通過(guò)的詞匯,就像大家談OO,就知道談的面向?qū)ο�,以及面向�(qū)ο蟮囊恍┨卣?懂設(shè)計(jì)模式的,一聽(tīng)到

來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2009-07-21
相關(guān).Net教程