Как я могу иметь Nullable <T> - PullRequest
0 голосов
/ 29 марта 2020
    public interface IOperationResult
    {
        bool IsSuccessful { get; set; }
        public string Message { get; set; }
    }

    public interface ICreateCommandOperationResult<T?> : IOperationResult
    {
        public T? InsertedId { get; set; }
    }

Когда я вставляю запись в базу данных, я хочу вернуть идентификатор вставленной записи. Но иногда бывают исключения, которые в этом случае мне нужно отправить null в InsertedId.

Как я могу это сделать?

1 Ответ

1 голос
/ 29 марта 2020

Вы можете применить ограничение struct generi c (или class, если вы используете C# 8 и вам нужны обнуляемые ссылочные типы ), используя ключевое слово where и заменить * 1006. * с T в ICreateCommandOperationResult декларации.

public interface ICreateCommandOperationResult<T> : IOperationResult
    where T : struct //where T : class
{
    public T? InsertedId { get; set; }
}

Пример реализации

public class Test : ICreateCommandOperationResult<int>
{
    public bool IsSuccessful { get; set; }
    public string Message { get; set; }
    public int? InsertedId { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...