Реализация "частичной пустоты" в VB - PullRequest
2 голосов
/ 20 марта 2009

Я следую вместе с отличной статьей Скотта Гатри ( Сценарии публикации форм MVC ) и пытаюсь конвертировать ее в VB. У меня все работает, кроме одного куска. В какой-то момент статьи он добавляет свои собственные бизнес-правила в сущность LINQ to SQL, например:

public partial class Product
{
    partial void OnValidate(ChangeAction action)
    {
       ...
    }
}

При преобразовании его в VB я не уверен, как перевести «частичную» часть OnValidate. Если я сделаю это:

Partial Public Class Product

    Private Sub OnValidate(ByVal action As ChangeAction)
       ...
    End Sub

End Class

тогда работают бизнес-правила, которые я включил в OnValidate, но он не выдает никаких исключений для неверных данных (т. Е. Символа в десятичном поле), что имеет смысл, поскольку я в основном переопределяю проверку продукта.

Каков синтаксис, чтобы убедиться, что OnValidate базового класса выполняется в дополнение к моей версии?

Редактировать: Обратите внимание, что создание OnValidate "Частичное частное Sub" вызывает следующие ошибки:

  • Частичные методы должны иметь пустые тела методов.
  • Метод 'OnValidate' не может быть объявлен как 'Частичный', поскольку только один метод 'OnValidate' может быть помечен как 'Частичный'.

Ответы [ 3 ]

2 голосов
/ 20 марта 2009

Как обычно, проблема кроется в другом месте кода. Я переключился с «UpdateModel» на «TryUpdateModel» где-то по пути, что означает, что простые ошибки назначения больше не генерировались. Возвращение к «UpdateModel» и использование «Private Sub OnValidate», как описано выше, теперь работает как надо.

OnValidate уже помечен как «Частичный» в контексте данных, потому что он должен быть переопределен - я все-таки не загромождал базовый код.

2 голосов
/ 20 марта 2009
Partial Private Sub OnValidate(ByVal action As ChangeAction)
   ...
End Sub
1 голос
/ 20 марта 2009

пометка как частная реализация

'designer' 
Partial Class Product

    ' Definition of the partial method signature.'
    Partial Private Sub OnValidate(ByVal action As ChangeAction)
    End Sub

End Class

'your implmentation'
Partial Class Product

    ' Definition of the partial method signature.'
    Private Sub OnValidate(ByVal action As ChangeAction)
      'do things'
    End Sub

End Class

см. http://msdn.microsoft.com/en-us/library/bb531431.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...