Почему StructureMap не создаст экземпляр моего класса налоговой стратегии? - PullRequest
0 голосов
/ 07 января 2011

StructureMap прекрасно работает для всех других моих классов репозитория, но не может предоставить экземпляр моего простого класса налоговой стратегии.Выдается ошибка, запрашиваю ли я экземпляр в параметре конструктора или явно запрашиваю его:

StructureMap Exception Code:  202
No Default Instance defined for PluginFamily System.Decimal, mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Не знаю, почему ошибка установлена ​​на System.Decimal, но в моем реестре Bootstrapper у меня есть:

For<ITaxStrategy>().Use<ValueAddedTax>();

, где ITaxStrategy - следующий простой интерфейс:

public interface ITaxStrategy
{
    decimal CalculateTax(decimal amount);
}

и ValueAddedTax реализован так:

public class ValueAddedTax : ITaxStrategy
{
    private decimal _taxRate = 1.14M;

    public ValueAddedTax(decimal taxRate)
    {
        _taxRate = taxRate;
    }

    public decimal CalculateTax(decimal amount)
    {
        return amount * _taxRate; // this be pulled from the database.
    }
}

Я даже обновился до версии 2.6.1 Сборка StructureMap, но ошибка сохраняется.Что я делаю не так?

1 Ответ

1 голос
/ 07 января 2011

Ах!Я не предоставлял необходимый аргумент десятичного конструктора!

Решено с помощью:

For<ITaxStrategy>().Use<ValueAddedTax>().Ctor<decimal>().Is(1.14M);
...