Когда я устанавливаю свойство moled типа, похоже, что они всегда требуют, как первый параметр, объект оригинального moled типа.Я также заметил, что в некоторых примерах в Справочном руководстве по кротам этот параметр назначен @this
, и я пытаюсь выяснить, почему.
Например, оригинальный класс выглядит примерно так:
public class ProductDAO
{
internal void Insert(Product product, string id)
{
...
}
}
Когда я собираюсь кротить этот метод, свойство ожидает делегата, первый параметр которого всегда является типом moledобъект, в данном случае объект ProductDAO
.Таким образом, в этом случае свойство ожидает делегата:
Action<ProductDAO, Product, string>
Так что мне всегда нужно предоставлять этот смоделированный объект в качестве первого параметра моего лямбда-выражения?Если да, то в чем разница между использованием обычного имени переменной и @this
?Что @this
означает / делает?
MProductDAO.AllInstances.InsertProductString = (dao, product, id) => { };
против
MProductDAO.AllInstances.InsertProductString = (@this, product, id) => { };