पर ऑब्जेक्ट कास्ट करें, मैंने थोड़ी देर में सोया नहीं है, इसलिए मुझे लगता है कि यह संभवतः आसान है।एक सामान्य प्रकार
मैं एक सामान्य वर्ग है कि राशि कम या ज्यादा यह:
public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
private T _value = null;
public T value
{
get { return _value; }
}
}
कहीं और, एक कस्टम serialize विधि में, किसी को एक object
वास्तव में Reference<(something)>
का एक उदाहरण है कि में गुजर रहा है। मैं बस "मूल्य" संपत्ति हर Reference<>
वस्तु है कि करने के लिए छोड़ना चाहते, तो मैं जाना चाहता हूँ:
:
string serialize(object o)
{
return base.serialize(((Reference<>) o).value);
}
बेशक
, जीवन इतना आसान संकलक कहते हैं क्योंकि के रूप में नहीं है using the generic type "Reference<T>" requires 1 type arguments
मैं क्या कर सकता हूं जो मैं करना चाहता हूं?
interface IReference<out T> where T : ApiResource {
T Value { get; }
}
फिर आप IReference<object>
या IReference<ApiResource>
करने के लिए IReference<Anything>
डाली कर सकते हैं:
मैं कॉन्वेंट जेनेरिक इंटरफेस के बारे में बिल्कुल कुछ नहीं जानता था इसलिए मैं वास्तव में खुश हूं कि मैं एसओ में बदल गया। मुझे जेनेरिक क्लास को तदनुसार संशोधित करना था: 'पब्लिक क्लास रेफरेंस: आईरिएफर जहां टी: एपीआईआरसोर्स {...} '। यह मुझे मूल्य संपत्ति को पुनः प्राप्त करने की अनुमति देता है ((आईरिएफर ) ओ)। वैल्यू –
Alain