How use Moles for a constructor?

У меня есть такой класс:

public class Product : IProduct
{
    static private string _defaultName = "default";
    private string _name;
    private float _price;
    /// Constructor
    public Product()
    {
        _price = 10.0F;
    }
    public void ModifyPrice(float modifier)
    {
        _price = _price * modifier;
    }  

Я хочу, чтобы ModifyPrice ничего не делал для определенного значения, но я также хочу вызвать конструктор, который устанавливает цену до 10. Я пробовал что-то вроде этого:

var fake = new SProduct() { CallBase = true };
var mole = new MProduct(fake)
    {
        ModifyPriceSingle = (actual) =>
        {
            if (actual != 20.0f)
            {
                MolesContext.ExecuteWithoutMoles(() => fake.ModifyPrice(actual));
            }
        }
    };
MProduct.Constructor = (@this) => (@this) = fake;

Но даже если fake хорошо инициализирован с помощью хорошего конструктора, я не могу присвоить его @this. Я тоже пробую что-то вроде

MProduct.Constructor = (@this) => { var mole = new MProduct(@this)... };

, но на этот раз я не могу вызвать свой конструктор. Как мне поступить?

7
задан Matthew Murdoch 31 May 2011 в 21:40
поделиться