Я программист на C # и вынужден писать код на VB.NET.
Продолжая изучать NHibernate для моего текущего клиента, я столкнулся с FluentNHibernate, который я считаю действительно привлекательным.
Но теперь мне интересно, как "перевести" этот код C # для сопоставления компонентов в код VB.NET:
Component(x => x.Address, m =>
{
m.Map(x => x.Number);
m.Map(x => x.Street);
m.Map(x => x.PostCode);
});
Я знаю отсюда:
Component(Of Client)(Function(c) c.Address, ...)
что мне не хватает, так это продолжать использовать скобки в VB.NET, поскольку здесь нет ключевых слов Begin End или около того.
РЕДАКТИРОВАТЬ 1: Следуя инструкциям г-на ДжаредПара, я решил, что его решение может сработать. Если мы потратим время, чтобы прочитать его ответ, мы можем заметить, что мы оба не знаем, что такое MType в его решении. Я мог бы узнать, что MType:
FluentNHibernate.Mapping.ComponentPart(Of TComponent)
Таким образом, TComponent, насколько я понимаю, является анонимным типом, который я буду использовать в качестве параметра. С этой точки зрения, поскольку я хочу отобразить свойства моего объекта Address, замена TComponent в сигнатуре моего метода справки, похоже, не работает.
Private Sub MapAdresseHelper(Of Adresse)(ByVal a As FluentNHibernate.Mapping.ComponentPart(Of Adresse))
a.Map(Function(m) m.Number)
a.Map(Function(m) m.Street).Length(50)
a.Map(Function(m) m.PostCode).Length(10)
End Sub
Ошибка, которую я получаю, состоит в том, что мой класс Address не имеет, например, элемента свойства с именем Street. Он видит мой тип адреса, он распознает его, но кажется, что он глючит. Я предполагаю, что VBNET плохо спроектирован для лямбда-выражений и менее развит, чем C # (извините, немного разочарован из-за ограничений работы с ним и неспособности делать вещи ОЧЕНЬ легко в C #.)