如何在C#中转换对象以获取Id

时间:2010-11-04 11:12:55

标签: c# nhibernate

我正在使用nhibernate并且当某些对象为null时会出现问题。即

Region为null,当我转到userProfile.Region.Id

时,我得到一个空引用

当然,在我的应用程序中,我可以做类似

的事情
var regionId = (Model.UserProfile.Region != null) ? Model.UserProfile.Region.Id : 0);

但我认为理想情况下我希望null对象id等于0.

这可以实现吗?这是可取的吗?

阶段2 ##使用接口

我现在有:

   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的最佳方法是什么?

1 个答案:

答案 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;
    }
}