저는이 간단한 코드를 직접 작성하려고 노력했지만 약간 어려웠습니다 (Reflection.Emit는 매우 새로운 것입니다). 그래서 여기 있습니다. 내가 필요로하는 것은 수퍼 클래스에서 상속 받고 메소드를 오버라이드하는 전체 클래스입니다.이 모든 것은 런타임에 생성되고 생성되도록 작성되었습니다.VB> Reflection.Emit : 수퍼 클래스에서 상속 받고 메서드를 재정의하십시오.
내 슈퍼 클래스를 ClassA는 구현 IDispose을 제외한 코드없이 빈 클래스 :
Namespace Basic
Public Class ClassA
Implements IDisposable
#Region "IDisposable Support"
Private disposedValue As Boolean ' To detect redundant calls
' IDisposable
Protected Overridable Sub Dispose(disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
' TODO: dispose managed state (managed objects).
End If
' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below.
' TODO: set large fields to null.
End If
Me.disposedValue = True
End Sub
' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources.
'Protected Overrides Sub Finalize()
' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
' Dispose(False)
' MyBase.Finalize()
'End Sub
' This code added by Visual Basic to correctly implement the disposable pattern.
Public Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class
End Namespace
내 ClassB가 런타임에 생성 될 수있는 것입니다.
Namespace Basic
Public Class ClassB
Inherits ClassA
Protected Overrides Sub Dispose(disposing As Boolean)
MyBase.Dispose(disposing)
End Sub
End Class
End Namespace
내가 많이 찾고있다 그리고 나는 즉시 ClassB가를 생성 할 때, 상속 코드를 작성하는 방법을 찾을 수 없습니다 : 그것은 다음과 같아야합니다. 또한, 나는 ClassB가
.method family strict virtual instance void
Dispose(bool disposing) cil managed
{
// Code size 11 (0xb)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldarg.1
IL_0003: call instance void WindowsApplication1.Basic.ClassA::Dispose(bool)
IL_0008: nop
IL_0009: nop
IL_000a: ret
} // end of method ClassB::Dispose
사람을위한 연산 코드에 호 세그먼트를 작성하는 방법에 대한 것을 확실하지 않다?
정확히 이해가되지 않습니다. 문제가 정확히 무엇입니까? 실패한 시도 코드를 게시 할 수 있습니까? – svick