在写这篇文章之前,我就这个话题回答了 10 多个问题,以确保我没有遗漏明显的东西,但我找不到这个特定场景的答案。
我正在开发一个企业产品,它(非常不幸)继承了一些仍然在系统的几个部分中使用的旧 VB6 代码。我目前正在分析如何最好地确定实际使用了多少 VB6 代码,以便公司可以将战略迁移到 .NET。我想出了以下想法:
在使用 VB6 代码的地方,调用它的典型代码(VB.NET)如下所示:
Dim myComObject = Server.CreateObject("MyCOMObject")
With myComObject
.MyCOMProperty = ""
.MyCOMMethod()
End with
我的想法是在 .NET 中构建一个外观,隐藏所有调用 COM 的代码,并在当前调用 COM 代码的所有位置调用外观抽象。换句话说:
public interface ICOMFacade
{
public object CreateCOMObject(string comObject)
}
...
Dim myComObject = comFacade.CreateCOMObject("MyCOMObject")
With myComObject
.MyCOMProperty = ""
.MyCOMMethod()
End with
CreateCOMObject 的实现将在内部调用 Server.CreateObject(comObject) 但它也会将此调用记录到数据库中。通过这种方式,我可以分析对所有 COM 对象的所有调用,并了解使用的和未使用的。然而,这还不够。我还需要了解从 COM 对象中调用了哪些方法和属性。出于这个原因,我需要了解是否有一种方法可以拦截 COM 对象的每个方法调用和属性。
谢谢你。