来自 List&Label .lst 文件的 RepositoryItem
RepositoryItem from List&Label .lst file
目前我们正在为 creation/editing 的列表和标签模板使用 WPF 应用程序,但我们正在考虑迁移到 WebDesigner。因为我们使用项目包含我们需要使用存储库模式。
我一直在尝试导入我们现有的模板,但我 运行 遇到了一些关于 RepositoryItemDescriptor
的问题。要创建一个 RepositoryItem
对象,您必须在构造函数中提供一个 Descriptor
,但我找不到任何关于如何从生成的 .lst
文件中获取它的信息。
我们掌握的数据是:
- 模板类型:列表或表单
- TemplateData:
.lst
文件的内容 (byte[]
)
- IsMainTemplate:
bool
, 是 "project include" 还是不是
- 文件名:
.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) { }
}
在文档中我只能找到它是什么(序列化为字符串的内部元数据,可以使用 class RepositoryItemDescriptor
进行编辑),但找不到它的创建方式或方式你可以得到它,如果我尝试调试我得到的例子(在 CreateOrUpdate()
方法中)@2@PgUAAENoS19QYWNrZWQAeNqd1E1PE1EYxfHfmsTvMAyJEeLY8iKCtpChU5MmvAiOC2NcjDCYmqFtZkaEqF9dXThgsTVGt/fm+Z9zz3lyv3/r2HXlQiFwKVeqDI2NdIVWPdIWCuRGTo2dGRp5ryv0Suq5yKpNoUCllhk5kymMjeS6QtdyldCuHfcs6FgUiQQSqUQgEk3dJY70pF57oS8wURo7N1TIBd64Z0GgY1HfodRA6rXAqVIgdN+SK21tbZlnt4o9J41W2OjNo9Qy72Y421OcVGzvD6R9fQcNcdb7A4WhSm3FQ4GhWu7CimUrt6T5rJvJacruHcruHEosldo38PI3ykjmQi7Qk4ilYoElJ/qOvTJwoi+Z4s33daMeeGDJiyna8szs725+zf6vmz8Tf+71U5WJzGmT/5ncucxHhdoXE6VcJVe6lFsWCGdOQzsCb+ds8I3T6R2+2/qv/ZjNvit0IjcxVhmqjZWuDZpXhHfanE2rKzSQCO0o53Ceamn5rGdTrC3Ws6YtkuiJbYts2LJlXWRbbNWayIbEE7E9sZ4Na9Y91vdVR+vWx9+9pa5NmvwKhVaTzQe5U7WWQqX+R+q+TKV20PxI54ZyZ0I7LmXK5t17PkkcOnSkdKxtT6pwLNbVnava0brt6abP1txGfwD+q8AH
,这也没有帮助。
知道如何从 .lst
文件正确创建 RepositoryItem
吗?或者如何 create/get descriptor
?
您应该尝试使用 combit.ListLabel23.Repository
命名空间中的 class RepositoryImportUtil
。这个助手 class 会为您完成所有艰苦的工作。给定一个 IRepository
接口和第一个文件,所需的代码类似于
IRepository listLabelRepository = <yourRepository>;
using (ListLabel LL = new ListLabel())
{
LL.FileRepository = listLabelRepository;
using (RepositoryImportUtil importUtil = new RepositoryImportUtil(listLabelRepository))
{
importUtil.ImportProjectFileWithDependencies(LL,
@"<PathToRootProject>");
}
}
如果此方法不是您所需要的,助手 class 还有一些 other methods 可以帮助您导入现有项目。
目前我们正在为 creation/editing 的列表和标签模板使用 WPF 应用程序,但我们正在考虑迁移到 WebDesigner。因为我们使用项目包含我们需要使用存储库模式。
我一直在尝试导入我们现有的模板,但我 运行 遇到了一些关于 RepositoryItemDescriptor
的问题。要创建一个 RepositoryItem
对象,您必须在构造函数中提供一个 Descriptor
,但我找不到任何关于如何从生成的 .lst
文件中获取它的信息。
我们掌握的数据是:
- 模板类型:列表或表单
- TemplateData:
.lst
文件的内容 (byte[]
) - IsMainTemplate:
bool
, 是 "project include" 还是不是 - 文件名:
.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) { }
}
在文档中我只能找到它是什么(序列化为字符串的内部元数据,可以使用 class RepositoryItemDescriptor
进行编辑),但找不到它的创建方式或方式你可以得到它,如果我尝试调试我得到的例子(在 CreateOrUpdate()
方法中)@2@PgUAAENoS19QYWNrZWQAeNqd1E1PE1EYxfHfmsTvMAyJEeLY8iKCtpChU5MmvAiOC2NcjDCYmqFtZkaEqF9dXThgsTVGt/fm+Z9zz3lyv3/r2HXlQiFwKVeqDI2NdIVWPdIWCuRGTo2dGRp5ryv0Suq5yKpNoUCllhk5kymMjeS6QtdyldCuHfcs6FgUiQQSqUQgEk3dJY70pF57oS8wURo7N1TIBd64Z0GgY1HfodRA6rXAqVIgdN+SK21tbZlnt4o9J41W2OjNo9Qy72Y421OcVGzvD6R9fQcNcdb7A4WhSm3FQ4GhWu7CimUrt6T5rJvJacruHcruHEosldo38PI3ykjmQi7Qk4ilYoElJ/qOvTJwoi+Z4s33daMeeGDJiyna8szs725+zf6vmz8Tf+71U5WJzGmT/5ncucxHhdoXE6VcJVe6lFsWCGdOQzsCb+ds8I3T6R2+2/qv/ZjNvit0IjcxVhmqjZWuDZpXhHfanE2rKzSQCO0o53Ceamn5rGdTrC3Ws6YtkuiJbYts2LJlXWRbbNWayIbEE7E9sZ4Na9Y91vdVR+vWx9+9pa5NmvwKhVaTzQe5U7WWQqX+R+q+TKV20PxI54ZyZ0I7LmXK5t17PkkcOnSkdKxtT6pwLNbVnava0brt6abP1txGfwD+q8AH
,这也没有帮助。
知道如何从 .lst
文件正确创建 RepositoryItem
吗?或者如何 create/get descriptor
?
您应该尝试使用 combit.ListLabel23.Repository
命名空间中的 class RepositoryImportUtil
。这个助手 class 会为您完成所有艰苦的工作。给定一个 IRepository
接口和第一个文件,所需的代码类似于
IRepository listLabelRepository = <yourRepository>;
using (ListLabel LL = new ListLabel())
{
LL.FileRepository = listLabelRepository;
using (RepositoryImportUtil importUtil = new RepositoryImportUtil(listLabelRepository))
{
importUtil.ImportProjectFileWithDependencies(LL,
@"<PathToRootProject>");
}
}
如果此方法不是您所需要的,助手 class 还有一些 other methods 可以帮助您导入现有项目。