C#如何制作类的构造函数
我有一个类C#如何制作类的构造函数,c#,generics,.net-core,C#,Generics,.net Core,我有一个类响应,带有通用参数: public class Response<T> where T : class { public bool Result; public T Data; } 然后我有一节课,我用最后一节课 public sealed class InstanceResponse : Response<IList<Instance>> { } 公共密封类InstanceResponse:Response{} 我试图在最后一个类中添
响应
,带有通用参数:
public class Response<T> where T : class {
public bool Result;
public T Data;
}
然后我有一节课,我用最后一节课
public sealed class InstanceResponse : Response<IList<Instance>> { }
公共密封类InstanceResponse:Response{}
我试图在最后一个类中添加一个构造函数,但不知道该如何做
我曾经尝试过类似的方法,但它不起作用,JsonString包含序列化的类InstanceResponse
public sealed class InstanceResponse : Response<IList<Instance>> {
public InstanceResponse(string JsonString) {
this = JsonConvert.DeserializeObject<InstanceResponse>(JsonString);
}
}
公共密封类InstanceResponse:响应{
公共InstanceResponse(字符串JsonString){
this=JsonConvert.DeserializeObject(JsonString);
}
}
我有一个错误无法分配给“this”,因为它是只读的
怎么可能呢?不可能使用
这个
关键字将json反序列化到对象,并在ctor中将其直接分配到对象本身
只要
Json包含序列化的类InstanceResponse
public sealed class InstanceResponse : Response<IList<Instance>> {
public InstanceResponse(string JsonString) {
this = JsonConvert.DeserializeObject<InstanceResponse>(JsonString);
}
}
您可以这样做:
public sealed class InstanceResponse : Response<IList<Instance>> {
public InstanceResponse(string JsonString) {
var response = JsonConvert.DeserializeObject<InstanceResponse>(JsonString);
this.Data = response.Data;
this.Result = response.Result;
}
}
您可以在此处反序列化json:
var response = JsonConvert.DeserializeObject<InstanceResponse>(json);
var response=JsonConvert.DeserializeObject(json);
附言
说到这里,@Lasse Vågsæther Karlsen就这个问题提出了一个有趣的观点。实际上,可以将某些内容分配给
此
,但是它仅在结构
的构件内工作,并且它的用例非常有限…(感谢Lasse)请定义“不工作”。这是编译错误吗?运行时错误?有什么错误吗?不做你想做的事?@SamiKuhmonen我有一个错误无法分配给“this”,因为它是只读的
是的,此
始终是只读的,因为它是当前对象。你来这里的目的是什么?你的意思是Data=…
还是类似的东西?@SamiKuhmonen用Data
和Result
进行了完整的分类,这并不能解释很多问题。请您提供一个或至少JSON包含什么或什么?只是一些不必要的信息:您可以在structs的构造函数中分配给this
。但这不是一条非常有用的信息。这通常在“复制构造函数”中完成。我能想到的唯一有用的东西,除了知道它是什么,如果你看到它。
var response = JsonConvert.DeserializeObject<InstanceResponse>(json);