का उदाहरण बनाते समय तर्क प्रदान नहीं कर सकता है मेरे पास एक ऑब्जेक्ट है जिसे मैं इसे बनाने के बाद ही पढ़ना चाहता हूं ... अर्थात् क्योंकि कन्स्ट्रक्टर में गुणों को गेटहाशकोड में उपयोग किया जाना चाहिए, और इसलिए नहीं बदला जा सकता एक बार बनाया गया।जेनेरिक प्रकार
मैं इस कई वर्गों है कि केवल पढ़ने के लिए कर रहे हैं में से एक है:
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
}
मेरे समस्या की तरह एक सामान्य परिणाम वर्ग है कि मैं टी के निर्माता में एक वस्तु पारित करने के लिए करना चाहते हैं लेकिन नहीं कर सकता जब मैं इसे टाइप करता हूं तो संकलक मुझे Cannot provide arguments when creating an instance of variable type
इस स्थिति के आसपास काम करने का सबसे अच्छा तरीका क्या है?
क्या मेरे पास एक इंटरफ़ेस होना चाहिए जिसे मैं कॉल कर सकता हूं जो संपत्ति को अपडेट करेगा?
क्या पिछले इंटरफ़ेस ब्रेक encapsulation या मेरे ऑब्जेक्ट में परिवर्तन करने की अनुमति देगा?
मुझे इससे और कैसे संपर्क करना चाहिए?
आप एक फैक्टरी वर्ग जानता है कि टी बनाने का तरीका बना सकते हैं (ताकि JsonResult MyFactory .create (tempresult कहेंगे) के बजाय नया –
मैं अपने शीर्षक संपादित किया है का उपयोग करने का। कृपया देखें, "[चाहिए सवालों में शामिल हैं" टैग "में उनके खिताब?] (http://meta.stackexchange.com/questions/19190/) ", जहां आम सहमति है" नहीं, उन्हें नहीं करना चाहिए "। –