C# 我怎样才能拥有Nullable<;T>; 公共接口IOperationResult { bool issusccessful{get;set;} 公共字符串消息{get;set;} } 公共接口ICreateCommandOperationResult:IOperationResult { 公共T?插入器{get;set;} }

C# 我怎样才能拥有Nullable<;T>; 公共接口IOperationResult { bool issusccessful{get;set;} 公共字符串消息{get;set;} } 公共接口ICreateCommandOperationResult:IOperationResult { 公共T?插入器{get;set;} },c#,.net,generics,C#,.net,Generics,在数据库中插入记录时,我希望返回插入记录的Id。 但有时也有例外,在这种情况下,我需要在InsertedId中发送null 如何操作?您可以应用where T:struct(或者类,如果您使用的是C#8并且需要a),并在ICreateCommandOperationResult界面中用T替换T? 公共接口ICreateCommandOperationResult:IOperationResult 其中T:struct//where T:class { 公共T?插入器{get;set;} } 实

在数据库中插入记录时,我希望返回插入记录的Id。 但有时也有例外,在这种情况下,我需要在
InsertedId
中发送
null


如何操作?

您可以应用
where T:struct
(或者
,如果您使用的是C#8并且需要a),并在
ICreateCommandOperationResult
界面中用
T
替换
T?

公共接口ICreateCommandOperationResult:IOperationResult
其中T:struct//where T:class
{
公共T?插入器{get;set;}
}
实施的例子

公共类测试:ICreateCommandOperationResult
{
公共布尔值IsSuccessful{get;set;}
公共字符串消息{get;set;}
公共int?inserteded{get;set;}
}

将您的
ICreateCommandOperationResult
设置为
T
上的泛型(即
ICreateCommandOperationResult
),将
T
约束为
struct
,然后使用
T?
作为
插入器的类型,编译器对
struct
感到满意,但对
struct
不满意class@Enigmativity对我在aswer中指出,在使用可空引用的情况下,它在C#8中是有效的types@PavelAnikhouski-是的,帕维尔,我的评论是针对哈米德的。他可能不明白这一点。
    public interface IOperationResult
    {
        bool IsSuccessful { get; set; }
        public string Message { get; set; }
    }

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