Преобразование кода сущности NHibernate из #C в VB.Net - PullRequest
1 голос
/ 12 января 2011

Здравствуйте, и спасибо за вашу помощь заранее.

Я начинаю в мире NHibernate и экспериментирую с рецептами поваренной книги NHibernate, я пытаюсь установить базовый класс сущностей для моих сущностей, и этокод C # для этого.Я хотел бы знать, что такое версия VB.NET, чтобы я мог реализовать ее в моем примере проекта.

Это код C #:

public abstract class Entity<TId>
{
 public virtual TId Id { get; protected set; }

 public override bool Equals(object obj)
 {
 return Equals(obj as Entity<TId>);
 }

 private static bool IsTransient(Entity<TId> obj)
 {
  return obj != null &&
  Equals(obj.Id, default(TId));
 }

 private Type GetUnproxiedType()
 {
  return GetType();
 }

 public virtual bool Equals(Entity<TId> other)
 {
   if (other == null)
   return false;
   if (ReferenceEquals(this, other))
   return true;

   if (!IsTransient(this) && !IsTransient(other) && Equals(Id, other.Id))
   {
    var otherType = other.GetUnproxiedType();
    var thisType = GetUnproxiedType();
    return thisType.IsAssignableFrom(otherType) ||
    otherType.IsAssignableFrom(thisType);
   }
   return false;
 }

 public override int GetHashCode()
 {
   if (Equals(Id, default(TId)))
   return base.GetHashCode();
   return Id.GetHashCode();
 }
}  

Я пытался использовать онлайн-конвертер, но ставитНичто не заменит по умолчанию (TId), которое мне не кажется правильным, поэтому я прошу о помощи:

 Private Shared Function IsTransient(obj As Entity(Of TId)) As Boolean
        Return obj IsNot Nothing AndAlso Equals(obj.Id, Nothing)
    End Function

Буду признателен за понимание, которое вы можете дать мне по этому вопросу.

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Код, о котором идет речь, правильный: Nothing в VB означает две вещи, в зависимости от контекста: null, если он присваивается ссылочному типу или сравнивается с ним, и default(T), если используется в контексте типа значения. T.

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

C # и VB имеют что-то общее.Они используют .NET Framework.Поэтому (часто) очень легко конвертировать между ними без каких-либо ошибок.

Вам следует взглянуть на конвертер здесь и посмотреть, генерирует ли он ваш код без неприятных ошибок.Обычно это работает как шарм для меня!http://www.developerfusion.com/tools/convert/csharp-to-vb/

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

Пожалуйста, посмотрите на это как на образец и основывайте свой проект на этом.Пожалуйста, держите меня в курсе о вашем статусе, если это возможно.В общем как легко или сложно было.Получение ресурсов из Интернета и т. Д.

http://www.codeproject.com/KB/vb/nhibervbdotnet.aspx

http://www.codeproject.com/KB/aspnet/NHibernate_VB_Net.aspx

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