Sparx EA.App 没有正确反映 Activator.CreateInstance

Sparx EA.App doesn't reflect Activator.CreateInstance properly

我有 .NET Framework 4.6.2 控制台应用程序正在访问 Sparx Enterprise Architect 存储库。下面的代码显示了使用 Activator.CreateInstance() 的简单示例。问题是在创建第二个实例时使用了当前实例(存储在 eaApp 中),因此我无法访问两个不同的存储库。这个问题有什么妙招吗?

static void Main(string[] args)
{
    EA.App eaApp = (EA.App)Activator.CreateInstance(Type.GetTypeFromProgID("EA.App", true));
    EA.App eaApp2 = (EA.App)Activator.CreateInstance(Type.GetTypeFromProgID("EA.App", true));
    eaApp.Repository.OpenFile(@"c:\Temp\UCI2.EAP");
    eaApp2.Repository.OpenFile(@"c:\Temp\UCI3.EAP");
    EA.Element test = eaApp.Repository.GetElementByGuid("{53F2ADAE-E8AC-40da-A06F-D64F525B87E8}");
    EA.Element test2 = eaApp2.Repository.GetElementByGuid("{DBF0459F-0662-4e5b-B7E3-A065087B624E}");


    Console.WriteLine($"test1: {test.Notes} test2: {test2.Notes}");
    Console.ReadKey();
}

如果您想创建一个新实例,请执行以下操作

 EA.Repository r = new EA.Repository();

 r.OpenFile("c:\eatest.eap");

manual

中所述

连接到(第一个)运行 实例可以这样完成:

using System.Runtime.InteropServices;
...
object obj = Marshal.GetActiveObject("EA.App");
var eaApp = obj as EA.App;
var myRepository = eaApp?.Repository;