我应该声明在C#中使用Extension.GetFieldNames()方法的命名空间是什么?

时间:2012-11-02 05:14:32

标签: c# interop ms-word vsto extension-methods

我最近浏览了很多帖子并遇到了这个问题:

Replace MergeFields in a Word 2003 document and keep style

这是一个旧线程,但看起来很有希望,因为我得到了代码的逻辑,并确信我将能够利用它。我面临的唯一问题是我似乎无法宣布/使用这种方法?

Extensions.GetFieldName()

任何替代它的想法也会受到赞赏! :)

以下是我尝试使用的实际代码

foreach (Field mergeField in document.Fields)
{
   if (mergeField.Type == WdFieldType.wdFieldMergeField)
   {
      string fieldText = mergeField.Code.Text;
      string fieldName = Extensions.GetFieldName(fieldText);

      if (values.ContainsKey(fieldName))
      {
         mergeField.Select();
         application.Selection.TypeText(values[fieldName]);
      }
   }
}

1 个答案:

答案 0 :(得分:1)

我真的不认为Extensions.GetFieldName是一个内置方法。它可以是用户定义的方法,而不是在互操作下。

通常会像这样检索字段名称

Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);

请仔细阅读link。有关如何撤消FieldNames的非常清晰的代码。