当我设置一个摩尔类型的属性时,看起来他们总是需要一个原始摩尔类型的对象作为第一个参数。我还注意到 Moles 参考指南中的一些示例将此参数分配为@this
,我试图找出原因。
例如,原始类看起来像这样:
public class ProductDAO
{
internal void Insert(Product product, string id)
{
...
}
}
当我去摩尔这个方法时,该属性需要一个委托,其第一个参数始终是被摩尔对象的类型,在这种情况下,是一个ProductDAO
对象。所以在这种情况下,该属性需要一个代表:
Action<ProductDAO, Product, string>
那么我是否总是必须提供那个摩尔对象作为我的 lambda 表达式的第一个参数?如果是这样,使用常规变量名与使用常规变量名有什么区别@this
?是什么@this
意思/做什么?
MProductDAO.AllInstances.InsertProductString = (dao, product, id) => { };
相对
MProductDAO.AllInstances.InsertProductString = (@this, product, id) => { };