Проблема проверки EntLib на GetType (объект) - ожидает, что строка не объект? - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть объект Address, который я пытаюсь проверить с помощью EntLib:

Учитывая следующий метод:

<ValidatorComposition(CompositionType.And, Ruleset:="FraudAnalysis")> _
<NotNullValidator(MessageTemplate:="Billing address is required.", Ruleset:="FraudAnalysis")> _
<TypeConversionValidator(GetType(Address), MessageTemplate:="Billing address must be an address object.", Ruleset:="FraudAnalysis")> _
Public Property BillingAddress() As Address
    Get
        Return _BillingAddress
    End Get
    Set(ByVal value As Address)
        _BillingAddress = value
    End Set
End Property

Я создаю адресный объект:

            Address thisAddress = new Address();
            thisAddress.Address1 = "12312 Long Street";
            thisAddress.City = "Los Angeles";
            thisAddress.State = "CA";
            thisAddress.Zip = "93322";
            // set billing address to address
            cardX.BillingAddress = thisAddress;

Так что теперь при cardX.billingAddress = thisAddress должен запускаться валидатор свойства BillingAddress (GetType (Address)) Вроде срабатывает, но возвращает эту ошибку:

Значение для проверки не относится к ожидаемому типу: ожидается System.String, но вместо него получен адрес. Может кто-нибудь увидеть проблему здесь / предложить исправить?

Спасибо.

1 Ответ

1 голос
/ 04 февраля 2010

Я бы просто избавился от объявлений ValidatorComposition и TypeConversionValidator, так как я думаю, что они здесь избыточны. Это избавит вас от вашей ошибки и нескольких строк кода.

Свойство уже строго типизировано для класса Address, поэтому вы не можете установить его в коде для объекта, который не является Address или не полиморфным с Address - имея дополнительный валидатор, чтобы проверить, что это избыточно.

Композиция валидаторов по умолчанию логическая И, в любом случае, вам нужно указывать композицию валидаторов, только если вы хотите ИЛИ группу или использовать более сложные группы, которые объединяют И / ИЛИ.

...