リフレクションを使用して、あるオブジェクト タイプから別のオブジェクト タイプに変換するメソッドがいくつかあります。私は Moq を介して変換メソッドをテストしている最中で、処理方法がわからない動作に遭遇しました。Moq オブジェクトを調べて PropertyInfo を取得すると、さらに 2 つのオブジェクトが得られます。
Moq.Mock``1[Namespace.Class+IElement] Mock
Moq.Mock Mock
これを再現するコードは次のとおりです。
public void Moq_Reflection() {
var realElement = new Stuff();
// Produces 2 items
PropertyInfo[] pInfo = realElement.GetType().GetProperties();
var mockElement = new Mock<IElement>();
mockElement.Setup(e => e.Property1).Returns(12);
mockElement.Setup(e => e.Property2).Returns(42);
// Produces 4 items
pInfo = mockElement.Object.GetType().GetProperties();
}
public interface IElement {
int Property1 { get; set; }
int Property2 { get; set; }
}
public class Stuff : IElement
{
public int Property1
{
get { return -1; }
set { }
}
public int Property2
{
get { return -2; }
set { }
}
}
これらのプロパティを取得せずに Moq オブジェクトを反映する方法はありますか?