如何获取KeywordFieldDefinitionData类型字段的类别的TCM URI?

SDL*_*per 6 tridion tridion-core-services

我想获取KeywordFieldDefinitionData类型字段的类别的TCM URI.

我使用下面链接的代码来读取组件的元数据字段: -

https://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

我可以在Reference.cs类中看到Category和CategoryFields属性(在给出对核心服务的refence时自动生成)但是在Field类(在上面的code.google链接中定义)中没有定义属性来访问Category和CategoryFields属性.我尝试按以下方式定义属性: -

     public System.Reflection.PropertyInfo Category
    {
        get { return definition.GetType().GetProperty("Category", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic); }
    }
Run Code Online (Sandbox Code Playgroud)

即使上面没有工作,你们中的任何人都请分析这个并回复.

提前致谢!

Ram*_*m G 4

您需要读取每个SchemaField定义数据并检查Type是否为KeywordFieldDefinitionData,然后获取Category信息。请参阅下面的示例片段。

SchemaFieldsData schemaFields = (SchemaFieldsData)_client.ReadSchemaFields(
               "tcmuriofschema", true, readOptions);
foreach (ItemFieldDefinitionData schemaField in schemaFields.Fields) {
   switch (schemaField.GetType().Name) {
      // handle other fields..
      // CategoryLink Fields
      case "KeywordFieldDefinitionData":
               KeywordFieldDefinitionData keywordTextSchemaField = (KeywordFieldDefinitionData)schemaField;
               string LinkedCategoryTitle =  keywordTextSchemaField.Category.Title;
               string LinkedCategoryId = keywordTextSchemaField.Category.IdRef;
               break;
      default:
               break;
   }
}
Run Code Online (Sandbox Code Playgroud)