こんにちは、ありがとうございました。NHibernate #CからVB.Netへのエンティティコード変換
NHibernateの世界ではじまり、NHibernate CookBook のレシピで実験しています。エンティティ用の基本エンティティクラスを設定しようとしています。これはこれの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
私はこの件について私があなたに与える洞察に感謝します。
'default(Object)== null'なので' Nothing'は 'default'と同義です。 – KeithS
入力用のKonradに感謝します。変換が正しく機能するはずです。私はそれを試してみる。 – CoderRoller