Ich denke, dass das Folgende für diesen Fall (und mehrere ähnliche Fälle in SO) funktionieren wird. Perf wird nicht allzu gut sein, aber wenn dies selten vorkommt, wird das kein Problem sein.
Erstellen Sie einen Stacktrace und analysieren Sie ihn auf der Suche nach einer abgeleiteten Klasse. Im allgemeinen Fall wäre dies nicht sehr zuverlässig oder könnte sogar nicht funktionieren, aber in bestimmten Fällen Ich glaube, das wird gut funktionieren. In Powershell:
$strace = (new-object diagnostics.stacktrace).tostring()
#
$frames = $strace -split " at "
$typesFromFrames = $frames | select -skip 1| # skip blank line at the beginning
% { ($_ -split "\(",2)[0]} | # Get rid of parameters string
% {$_.substring(0,$_.lastindexof("."))} | # Get rid of method name
$ {$_ -as [type]}
#
# In powershell a lot of the frames on the stack have private classes
# So $typesFromFrames.count is quite a bit smaller than $frames.count
# For the OP, I don't think this will be a problem because:
# 1. PS isn't being used
# 2. The derived class in the OP isn't private
# (if it is then tweaks will be needed)
#
$derivedOnStack = $typesFromFrames | ? { $_.issubclassof( [BaseClass])}
Hoffentlich wird es nur ein Element in $derivedOnStack geben, aber das hängt von den Besonderheiten der Anwendung ab. Einige Experimente werden erforderlich sein.