我正在使用nhibernate并且当某些对象为null时会出现问题。即
Region为null,当我转到userProfile.Region.Id
时,我得到一个空引用当然,在我的应用程序中,我可以做类似
的事情var regionId = (Model.UserProfile.Region != null) ? Model.UserProfile.Region.Id : 0);
但我认为理想情况下我希望null对象id等于0.
这可以实现吗?这是可取的吗?
interface IEntity
{
int GetIdOrZero();
}
和
public class Region :IEntity
{
public virtual int Id { get; set; }
public int GetIdOrZero()
{
return (this != null) this.Id : 0;
}
}
测试region是否为null的最佳方法是什么?
答案 0 :(得分:3)
您无法更改空引用的行为,但您可以定义执行所需操作的扩展方法:
public static class RegionExtensions
{
public static int GetIdOrZero(this Region region)
{
return region == null ? 0 : region.Id;
}
}
修改强>
public interface IEntity
{
int Id { get; }
}
public class Region : IEntity { ... }
public static class EntityExtensions
{
public static int GetIdOrZero(this IEntity entity)
{
return entity == null ? 0 : entity.Id;
}
}