如何在C#泛型类构造函数中初始化泛型类型实例?
问题与解决方案:在泛型类构造函数中自动初始化泛型属性
我定义了如下泛型类:
public class ApiResult<T> where T : class { public string CorrelationId { get; set; } public string Message { get; set; } public bool IsSuccess { get; set; } public T Result { get; set; } public ApiResult() { } }
使用时必须手动为Result属性赋值泛型类型实例:
ApiResult<myPropClass> someVar = new ApiResult<myPropClass>(); someVar.Result = new myPropClass();
我想知道有没有办法在泛型类的构造函数里直接初始化Result,比如这样:
public ApiResult(){ // 初始化实例 this.Result = new T(); }
解决方案
修改泛型约束,添加new()约束(要求T必须包含无参构造函数),即可在构造函数中直接实例化T类型:
public class ApiResult<T> where T : class, new() { public string CorrelationId { get; set; } public string Message { get; set; } public bool IsSuccess { get; set; } public T Result { get; set; } public ApiResult() { this.Result = new T(); } }
使用时无需再手动初始化Result,直接操作即可:
ApiResult<myPropClass> someVar = new ApiResult<myPropClass>(); someVar.Result.prop = "your value";
内容的提问来源于stack exchange,提问作者vantian
相关产品推荐
相关产品推荐

