Home > Software engineering >  Class<T> Constructor, Trying to make T Nullable
Class<T> Constructor, Trying to make T Nullable

Time:10-04

I have two class definition that are actually the same. What i'm trying to do is make the T attribute Nullable

public class ApiResponse<T>
{
    public Boolean IsSuccessful { get; set; }
    public T Data { get; set; } = default;
    public String Message { get; set; }
    public String Error { get; set; }

}
public class ApiResponse
{
    public Boolean IsSuccessful { get; set; }
    public String Message { get; set; }
    public String Error { get; set; }
}

is there any way to simplify? is for my job, I just came out of curiosity.

CodePudding user response:

In order for T to be Nullable implies that T must be a struct. This means ApiResponse<T> must have the constraint that T is a struct. You can also reduce code by inheriting from ApiResponse.

  public class ApiResponse<T> : ApiResponse  where T : struct
    {
        public Nullable<T> Data { get; set; } = null;
    }

CodePudding user response:

Right now you have two completely unrelated classes. Might be helpful if they had an inheritance relationship.

public class ApiResponse
{
    public Boolean IsSuccessful { get; set; }
    public String Message { get; set; }
    public String Error { get; set; }
}

public class ApiResponse<T> : ApiResponse
{
    public T Data { get; set; } = default;
}
  • Related