2011-01-12 22 views
1

こんにちは、ありがとうございました。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 

私はこの件について私があなたに与える洞察に感謝します。

答えて

2

問題のコードが正しい:値型Tの文脈で使用される場合default(T)に割り当てまたは参照型と比較した場合null、そして:VBでNothingは、文脈に応じて、二つのことを意味します。

+1

'default(Object)== null'なので' Nothing'は 'default'と同義です。 – KeithS

+0

入力用のKonradに感謝します。変換が正しく機能するはずです。私はそれを試してみる。 – CoderRoller

1

これをサンプルとして見て、プロジェクトをこれをベースにしてください。可能であれば、あなたのステータスについて私に最新の情報を提供してください。一般的にどの程度簡単か難しいか。ウェブなどの取得リソース

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

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

+0

ありがとうございました。私はあなたとその人がこれに投稿してくれるようにします。 – CoderRoller

1

C#とVBは共通で何かを持っています。それらは.NET Frameworkを使用します。したがって、間違いなく、それらの間で変換することは(しばしば)非常に簡単です。

ここでコンバーターを見て、厄介なエラーもなくコードを生成するかどうかを確認してください。通常、それは私の魅力のように動作します! http://www.developerfusion.com/tools/convert/csharp-to-vb/

+0

ありがとう、実際これは私が試みたコンバータです。私は別のものを探し、そのC#の出力が何であるかを見て、他のものと比較して、すべてをもう一度テストします。 – CoderRoller

+0

これが役に立った場合は、投票してください。 –