私がやろうとしているのは、AutoFixture と Moq を使用してリポジトリを作成することを一般化することです。リストに偽のレコードを追加する「add」というメソッドがあります。リストはレコードと呼ばれ、クラスに対してグローバルです。一般的な M は、嘲笑されるモデルです。メソッドは「this」を返すため、メソッドをチェーンできます。
public Repo<M> add(string prop, string val) {
var a = fixture.Build<M>().With(m => m.GetProperty(prop), val).Create();
records.Add(a);
return this;
}
拡張クラスを使用します(これはSOの検索で見つかりました):
public static class MyExtensions
{
public static object GetProperty<T>(this T obj, string name) where T : class
{
Type t = typeof(T);
return t.GetProperty(name).GetValue(obj, null);
}
}
私が得ているエラーは、「Ploeh.AutoFixture.dll で ArgumentException が発生しました」です。
私の質問は次のとおりです。コンパイル時にモデルが不明な場合、メソッドのパラメーターとして汎用オブジェクトのプロパティを渡すにはどうすればよいですか?