2

目前我们正在使用 WPF 应用程序来创建/编辑 List&Label 模板,但我们正在考虑迁移到 WebDesigner。因为我们使用项目包含我们需要使用存储库模式。

我一直在尝试导入我们现有的模板,但我遇到了一些关于RepositoryItemDescriptor. 要创建一个RepositoryItem对象,您必须Descriptor在构造函数中给出 a ,但我找不到有关如何从生成的.lst文件中获取它的任何信息。

我们掌握的数据有:

  • 模板类型:列表或表单
  • TemplateData:.lst文件内容(byte[]
  • IsMainTemplate: bool, 是否为“项目包含”
  • 文件名:文件.lst

构造RepositoryItem函数需要:string internalID, string descriptor, string type, DateTime lastModificationUTC.

我现在拥有的是:

public class TemplateBaseModel : RepositoryItem
{
    // Properties

    // we have our own Ids and modification date, override RepositoryItem properties
    public new InternalID => $"repository://{{{Id}}}";
    public DateTime LastModificationUTC => ModifiedOn; 

    public TemplateBaseModel() : base($"repository://{{{Guid.NewGuid()}}}", /* ?? */, RepositoryItemType.ProjectList.Value, DateTime.Now) { }
    public TemplateBaseModel(string internalID, string descriptor, string type, DateTime lastModificationUTC) : base(internalID, descriptor, type, lastModificationUTC) { }
}

在文档中,我只能找到它是什么(序列化为字符串的内部元数据,并且可以使用类进行编辑RepositoryItemDescriptor),但不能找到它的创建方式或获取方式,如果我尝试调试示例我get (in the CreateOrUpdate()method) @2@PgUAAENoS19QYWNrZWQAeNqd1E1PE1EYxfHfmsTvMAyJEeLY8iKCtpChU5MmvAiOC2NcjDCYmqFtZkaEqF9dXThgsTVGt/fm+Z9zz3lyv3/r2HXlQiFwKVeqDI2NdIVWPdIWCuRGTo2dGRp5ryv0Suq5yKpNoUCllhk5kymMjeS6QtdyldCuHfcs6FgUiQQSqUQgEk3dJY70pF57oS8wURo7N1TIBd64Z0GgY1HfodRA6rXAqVIgdN+SK21tbZlnt4o9J41W2OjNo9Qy72Y421OcVGzvD6R9fQcNcdb7A4WhSm3FQ4GhWu7CimUrt6T5rJvJacruHcruHEosldo38PI3ykjmQi7Qk4ilYoElJ/qOvTJwoi+Z4s33daMeeGDJiyna8szs725+zf6vmz8Tf+71U5WJzGmT/5ncucxHhdoXE6VcJVe6lFsWCGdOQzsCb+ds8I3T6R2+2/qv/ZjNvit0IjcxVhmqjZWuDZpXhHfanE2rKzSQCO0o53Ceamn5rGdTrC3Ws6YtkuiJbYts2LJlXWRbbNWayIbEE7E9sZ4Na9Y91vdVR+vWx9+9pa5NmvwKhVaTzQe5U7WWQqX+R+q+TKV20PxI54ZyZ0I7LmXK5t17PkkcOnSkdKxtT6pwLNbVnava0brt6abP1txGfwD+q8AH,这也无济于事。

知道如何RepositoryItem.lst文件正确创建一个吗?或如何创建/获取descriptor

4

1 回答 1

2

您应该尝试使用命名空间中的RepositoryImportUtilcombit.ListLabel23.Repository。这个助手类为您完成了所有艰苦的工作。给定一个IRepository接口和就位的 lst 文件,所需的代码将类似于

IRepository listLabelRepository = <yourRepository>;

using (ListLabel LL = new ListLabel())
{
    LL.FileRepository = listLabelRepository;
    using (RepositoryImportUtil importUtil = new RepositoryImportUtil(listLabelRepository))
    {
        importUtil.ImportProjectFileWithDependencies(LL, 
            @"<PathToRootProject>");
    }
}

如果此方法不是您所需要的,辅助类还有其他一些方法可以帮助您导入现有项目。

于 2018-03-15T13:27:58.383 回答