Tôi có một đối tượng mà tôi muốn chỉ đọc sau khi được tạo ... cụ thể là vì các thuộc tính trong hàm tạo phải được sử dụng trong GetHashCode và do đó không thể thay đổi một khi đã được tạo.Không thể cung cấp đối số khi tạo một thể loại chung loại
tôi đây là một trong nhiều lớp học mà là readonly:
public class AccountLabel
{
private string result;
public AccountLabel(string result)
{
// TODO: Complete member initialization
this.result = result;
}
public string JSONRPCData { get { return this.result; } }
}
Tôi có một lớp kết quả chung chung như
public class JsonResult<T> where T : JObject, new()
{
private T bhash;
private string p;
private JsonErrorResponse error;
private int _id;
private Newtonsoft.Json.Linq.JObject ret;
public JsonResult(Newtonsoft.Json.Linq.JObject ret)
{
this.ret = ret;
var tempError = ret["error"];
var tempid = ret["id"];
JsonErrorResponse error = new JsonErrorResponse(tempError);
this.error = error;
this._id = 1;
var tempresult = ret["result"];
T someResult = new T(tempresult); // <--- here is my problem
}
vấn đề này của tôi là tôi muốn vượt qua một đối tượng vào constructor T nhưng không thể. Khi tôi nhập trình biên dịch này cho tôi biết Cannot provide arguments when creating an instance of variable type
Cách tốt nhất để giải quyết tình huống này là gì?
Tôi có nên có Giao diện mà tôi có thể gọi để cập nhật thuộc tính không?
Giao diện trước đó có bị đóng gói đóng gói hoặc cho phép thay đổi được thực hiện cho đối tượng của tôi không?
Tôi nên tiếp cận điều này bằng cách nào khác?
bạn có thể tạo lớp Nhà máy biết cách tạo T (vì vậy JsonResult sẽ gọi MyFactory .tạo (tempresult) thay vì sử dụng mới –
Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi nên bao gồm" thẻ "trong tiêu đề của họ?] (http://meta.stackexchange.com/questions/19190/) ", trong đó sự đồng thuận là" không, họ không nên ". –