Как привести объект, чтобы получить идентификатор в C # - PullRequest
1 голос
/ 04 ноября 2010

Я использую nhibernate и у меня возникает проблема, когда некоторые объекты имеют значение null. т.е.

Регион является нулевым, и я получаю нулевой реф, когда я иду userProfile.Region.Id

Конечно, в моем приложении я мог сделать что-то вроде

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

Но я думаю, что в идеале я хотел бы, чтобы идентификаторы нулевых объектов были равны 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;
        }
    }

Каков наилучший способ проверить, является ли регион пустым?

1 Ответ

3 голосов
/ 04 ноября 2010

Вы не можете изменить поведение пустой ссылки, но вы можете определить метод расширения, который делает то, что вы хотите:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...