/// <summary> 将 Settings 配置文件中的字符进行反序列化 </summary> /// <returns></returns> /// <remarks>对于Visio.NET的开发,不要在 IExtensionApplication.Initialize() 方法中执行此操作,否则即使在Initialize时可以正常序列化, /// 但是在调用ExternalCommand时还是会出bug,通常的报错为:没有为该对象定义无参数的构造函数。 </remarks> public static Dictionary <AddinManagerAssembly, List <IVisioExCommand> > GetInfosFromSettings() { var nodesInfo = new Dictionary <AddinManagerAssembly, List <IVisioExCommand> >(new AssemblyComparer()); // 提取配置文件中的数据 AssemblyInfoSettings s = new AssemblyInfoSettings(); if (!string.IsNullOrEmpty(s.AssemblyInfoSerial)) { // 提取字符 AssemblyInfos amInfos = StringSerializer.Decode64(s.AssemblyInfoSerial) as AssemblyInfos; // 提取数据 nodesInfo = DeserializeAssemblies(amInfos); } return(nodesInfo); }
public static void SaveAssemblyInfosToSettings( Dictionary <AddinManagerAssembly, List <IVisioExCommand> > nodesInfo) { // 转换为可序列化的数据 List <string> assemblyPaths = nodesInfo.Select(r => r.Key.Path).ToList(); AssemblyInfos amInfos = new AssemblyInfos() { AssemblyPaths = assemblyPaths.ToArray() }; // 序列化 string amInfosString = StringSerializer.Encode64(amInfos); // 保存到物理存储中 AssemblyInfoSettings s = new AssemblyInfoSettings(); s.AssemblyInfoSerial = amInfosString; s.Save(); }