我有几种方法可以使用反射从一种对象类型转换为另一种对象类型。我正在通过 Moq 测试转换方法,并且偶然发现了一种我不知道如何处理的行为。当我反映一个 Moq 对象以获取 PropertyInfo 时,我得到了两个额外的对象。
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 对象而不检索这些属性?