2017-02-21 4 views
1

で辞書項目を、このメソッドをループ:AWSに切り替えた後、私は奇妙なエラーを取得私たちは今、仕事にiTextsharp

public static Dictionary<string, string> GetFormFieldNames(string pdfPath) 
{ 
    var fields = new Dictionary<string, string>(); 

    foreach (DictionaryEntry entry in reader.AcroFields.Fields) 
    { 
     fields.Add(entry.Key.ToString(), string.Empty); 
    } 

    return fields; 
} 

Cannont convert type System.Collections.Generic.KeyValuePair<String.iTextSharp.text.pdf.AcroFields.item> to System.CollectionsEntry

を私はエラーが明らかである理解が、私は得るように見えることはできません右にタイプしてください。なぜこの方法が機能しなくなるのでしょうか?私はここで間違って何をしていますか?

+1

DictionaryEntryの代わりにvarを使用してintellisenseを使用して辞書に正しい値を取得できますか? – thinklarge

+1

@thinklarge私はあなたが提案したことをやりました。あなたがそれを答えさせたら、私はそれを答えとしてマークします。どのくらいのユーザーが今この問題を抱えているのか想像もできません。 – MizAkita

+1

返信いただきありがとうございます。私はこの理由のためにC#の周りのツールを大好きです。 Intellisenseは、新しいライブラリの学習曲線をずっと簡単にします。 – thinklarge

答えて

1

型定義の代わりにvarを使用して、Intellisenceを完成させることができます。

public static Dictionary<string, string> GetFormFieldNames(string pdfPath) 
{ 
    var fields = new Dictionary<string, string>(); 

    foreach (var entry in reader.AcroFields.Fields) 
    { 
     fields.Add(entry.*use intellisense here*, string.Empty); 
    } 

    return fields; 
} 
0

エラーメッセージは意味がありません。 KeyValuePairには2つの型パラメータがありますが、投稿したメッセージには1つしかありません。 .NETにはSystem.CollectionsEntry型または名前空間もありません。実際のエラーメッセージは切り捨てられていると思われます。いずれにしても、フィールドの型はSystem.Collections.Generic.KeyValuePair <文字列、iTextSharp.text.pdf.AcroFields.Item >であると推測しています。あなたはforeach(reader.AcroFields.Fieldsのvar kvp)を使うことができます。

なぜ「変更」されたのかというと、.NETのバージョンを変更したのでしょうか? DictionaryEntryは、Hashtableを反復処理する前のジェネリックの方法です。

関連する問題