出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
[5003] Re:ASPで継承 |
投稿者:暇人さん 2005/04/20 16:09:13 |
暇人です 年度末処理→年度始処理→引継ぎ→新人研修(指導員)→飲み会→新年度トラブル対応→通常業務 のKOコンボからやっと抜け出ました とても遅くなりましたが。 私が考えたインターフェース継承みたいな何かをのせときます。 インターフェース部はクラス1、関数1で成り立っています Class interface Public method(0) Public property(0) Sub Class_Initialize() method(0) = "method,2" property(0) = "property" End Sub End Class '補足説明:method(0) = "medhod,2" はメソッド名:methodの引数が2つあるということです。 'メソッドを増やしたければ配列を大きくして、"method2,0"という様に追加していってください。プロパティも同じですが引数の設定がない分簡潔です。 '仕様上メソッド名に,は使用できません。エラーします。 'クラス名は好きな名前に変更してください。 function Ride(a,b) Ride = "" Dim subClass Dim superClass Execute("Set superClass = New " & a) Execute("Set subClass = New " & b) Dim c Dim d Dim ck Dim msg Dim dummy ck = 0 On Error Resume Next Err.Clear For Each c In superClass.property Eval("msg = subClass." & c) If Err.Number <> 0 then msg = msg & "プロパティ:" & c & "がオーバーロードされていません。" Err.Clear End If Next For Each c In superClass.method d = Split(c,",") dummy = "msg = subClass." & d(0) & "(" if d(1) <> "0" Then For i = 1 to CLng(d(1)) dummy = dummy & "null," Next dummy = Left(dummy, Len(dummy) - 1) end if dummy = dummy & ")" msgbox(dummy) Eval(dummy) If Err.Number <> 0 then msg = msg & "メソッド:" & d(0) & "がオーバーロードされていません。" Err.Clear End If Next On Error Goto 0 Ride = msg end function '補足説明:関数名は自由に変更してください。 長くなりましたのでここまでで一旦送信します。 |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
TreeBBS For ASP V.0.1.3 |