オブジェクトを作成した後に読み込みたい、つまりコンストラクタのプロパティをGetHashCodeで使用する必要があるため変更できないためです一度作成されました。ジェネリック型のインスタンスを作成するときに引数を提供できません
私はこれは読み取り専用です、多くのクラスの1つです:
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のコンストラクタにオブジェクトを渡したいということであるように、私は一般的な結果クラスを持っていますしかしできません。私がこれをタイプすると、コンパイラは教えてくれますCannot provide arguments when creating an instance of variable type
この状況を回避する最も良い方法は何ですか?
プロパティを更新する必要があるインターフェイスを用意してください。
以前のインターフェイスでカプセル化が中断されたり、オブジェクトに変更が加えられることはありますか?
他にどのようにこのアプローチをとるべきですか?
Tを作成する方法を知っているFactoryクラスを作成することができます(つまり、JsonResultはMyFactoryをという名前で呼び出すことになります) –
私はあなたのタイトルを編集しました。彼らのタイトルは?](http://meta.stackexchange.com/questions/19190/) "、コンセンサスは「いいえ、彼らはすべきではない」。 –