2008-10-16 2 views
1

Я не слишком хорошо знаком с дженериками (концепцией или синтаксисом) вообще (не используя их в коллекциях, а что нет), но мне было интересно, является ли следующее наилучшим способом выполнения что я хочу. На самом деле, я не совсем уверен, что дженерики в этом случае решат мою проблему.Общие функции в VB.NET

Я моделируется и отображается несколько десятков объектов в NHibernate, и нуждается в каком-то универсальный классе для своих операций CRUD вместо создания отдельного класса стойкой бактерии для каждого типа .. таких как

Sub Update(someObject as Object, objectType as String) 
    Dim session As ISession = NHibernateHelper.OpenSession 
    Dim transaction As ITransaction = session.BeginTransaction 
    session.Update(ctype(someObject, objectType)) 
    transaction.Commit() 
End Sub 

где someObject может быть разных типов. Я знаю, что это не лучший способ сделать это (или если он даже будет работать), но я надеюсь, что кто-то сможет направить меня в правильном направлении.

ответ

2

Ключевой вопрос здесь: Что делает session.Update как параметр? Если Session.update позволяет общий объект, то я бы просто использовать, что:

Sub Update(Of T)(ByVal someObject As T) 
    Dim session As ISession = NHibernateHelper.OpenSession 
    Dim transaction As ITransaction = session.BeginTransaction 
    session.Update(someObject) 
    transaction.Commit() 
End Sub 

Это будет течь общий тип Т до Session.update.

Если session.Update просто берет объект, то просто передайте объект; нет необходимости подвергать его воздействию. Кроме того, если objectType (string) - это просто имя типа текущего объекта, вам лучше будет использовать someObject.GetType() в первую очередь.

Смежные вопросы