代码之家  ›  专栏  ›  技术社区  ›  Slávek Rydval

Sparx EA.App未正确反映Activator.CreateInstance

  •  0
  • Slávek Rydval  · 技术社区  · 6 年前

    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();
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Geert Bellekens    6 年前

    如果要创建新实例,请执行以下操作

     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;