用于托管进程内服务器的自定义COM类工厂

我正在寻找以MkParseDisplayName/BindToObject 方式为托管类库实现自定义COM激活逻辑。

这样,从VB创建对象可能如下所示:

 obj = GetObject("clsid:12341234-1234-1234-1234-123412341234:!UniqueObjectId") 

这对于一个进程外服务器(使用CoRegisterClassObject )来说不是问题。 但是,对于进程内服务器,我需要更改DllGetClassObject的实现,这通常由mscoree.dll提供。 这有可能吗?

我看到的唯一其他选项是创建一个C#单例对象作为类工厂并在其上实现IParseDisplayName 。 从理论上讲,这样的单例也可以使用CoRegisterClassObject(CLSCTX_INPROC_SERVER)注册自定义的IClassFactory类对象,但CoRegisterClassObject(CLSCTX_INPROC_SERVER) ,单例本身都需要首先实例化。