gpt4 book ai didi

c# - NHibernate 实体代码从#C 到 VB.Net 的转换

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:07 26 4
gpt4 key购买 nike

您好,感谢您的提前帮助。

我从 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) 的位置放置了一个 Nothing 引用,这对我来说似乎不正确,这就是我请求帮助的原因:

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

如果您能就此主题给我一些见解,我将不胜感激。

最佳答案

有问题的代码是正确的:Nothing 在 VB 中代表两件事,具体取决于上下文:null 如果分配给引用类型或与引用类型进行比较,以及 default(T) 如果在值类型 T 的上下文中使用。

关于c# - NHibernate 实体代码从#C 到 VB.Net 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4671396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com