抽象类继承的属性始终为空

时间:2021-01-29 08:39:17

标签: c# http-post abstract-class getter-setter

我正在使用第三方服务,我的请求工作正常,但我需要将此结果传递给我的模型,以便我可以将其分成一个数组,并能够根据索引设置属性,因为它们没有有钥匙。我正在通过一个抽象类传递这个值并在我的模型中继承它,但是当试图在我的模型构造函数中调用该属性时,它总是返回 null,即使在我的抽象类中它已被设置。

我已经尝试使我的属性抽象和覆盖,但它不起作用。我也尝试通过构造函数传递值,但作为一个 T 实例,它不允许我,也许我做错了什么。

问题是,我可以通过什么方式获得值集?

这是我的 HttpBase.cs

    public class HttpBase
    {
        public TResponse Post<TResponse>(string url, Dictionary<string, string> body)
            where TResponse : ClassA, new()
        {
            string result = Post(url, body).Result.ToString();
            TResponse response = new TResponse
            {
                JSON = result // this is where I try to set my property
            };

            return response;
        }     
   
        public async Task<string> Post(string url, Dictionary<string, string> body)
        {
           // returns a string separated by '|'. Ex: "abc|abcd|abcde"
        }
    }

ClassA.cs

public abstract class ClassA
    {
        public string JSON { get; set; }
    }

MyModel.cs

    public class MyModel : ClassA
    {
        public MyObject()
        {
            string json = this.JSON; // null
            string[] arr = json.Split('|', '\n').ToArray(); // throws NullReferenceException
        }

        [Position(1)] //Custom Attribute
        public string Name{ get; set; }
    }

1 个答案:

答案 0 :(得分:2)

快速回答是因为您过早地尝试使用 JSON 属性。

构造函数在初始化块之前执行,这意味着您还没有分配值。