我有一个对象,在创建后我希望它是只读的...这是因为构造函数中的属性必须在GetHashCode中使用,因此一旦创建就不能更改。
这是许多只读类之一:
public class AccountLabel
{
private string result;
public AccountLabel(string result)
{
// TODO: Complete member initialization
this.result = result;
}
public string JSONRPCData { get { return this.result; } }
}
我有一个通用的结果类,就像这样
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
}
我的问题是我想将一个对象传递到T的构造函数中,但无法实现。当我这样输入时,编译器告诉我“创建变量类型实例时不能提供参数”。如何解决这种情况是最好的方法?
以下是几种解决方案:
1. 我可以创建一个接口,以便在其中调用更新属性的方法。
2. 之前提到的接口是否会破坏封装性或允许对我的对象进行更改?
3. 我还有其他方法来解决这个问题吗?