を使用して、クラスPrivateObjectのインスタンスを作成しようとしています(ここにあります)。デバッガーと Visual Studio 2008 のオブジェクト ブラウザーを調べたところ、setter 以外のプロパティに関連するものは見つかりませんでした。以下は私が使用しているコードです。ItemChangeItemId
var itemChange = new PrivateObject(typeof(ItemChange));
itemChange.SetFieldOrProperty("ChangeType", _fixture.CreateAnonymous<ChangeType>());
itemChange.SetFieldOrProperty("ItemId", _fixture.CreateAnonymous<ItemId>());
私が受け取るエラーは次のとおりです。
System.MissingMethodException : Method 'Microsoft.Exchange.WebServices.Data.ItemChange.ItemId' not found.
のバリエーションを試しましたがBindingFlags、何も役に立たないようです。セッターがなく、ゲッターのみのプロパティを設定するにはどうすればよいですか?
編集
私のコメントに関しては、PrivateObjectオブジェクト インスタンスを作成して設定できる他のインライン クラスItemIdはItemEventクラスです (ここにあります)。このクラスは簡単でした。なぜなら、デバッグ中にこのクラスをウォッチ リストに追加したときにitemId、プライベート変数として表示されたからです。ただし、ItemChangeクラスで同じ手順を実行しても、セッターしかないプロパティ自体以外のフィールドの痕跡は見つかりません。これは、このプロパティを設定する方法に困惑しているところです。ItemId
最後に、クラスを逆コンパイルして何が何であるかを確認できるツールにアクセスできません。