मैं कुछ सलाह की जरूरत है/इस पर मदद, मैं पेड़ से लकड़ी किसी भी अधिक नहीं देख सकता।सी # कास्टिंग जेनरिक (सहप्रसरण और contravariance?)
यह कुछ जेनरिक का उपयोग कर इंटरफेस को लागू करने कक्षाओं का एक सीधे आगे श्रृंखला है।
तब मैं उदाहरण के लिए ठोस प्रकार के कास्ट करने के लिए कोशिश कर रहा हूँ:
MyGenericObject<SomeObject> _obj;
IMyGenericObject<ISomeObject> _genObj = (IMyGenericObject<ISomeObject>)_obj;
// अमान्य डाली
मैं सहप्रसरण और contravariance लेकिन बहुत स्पष्ट नहीं के बारे में कुछ लेख पढ़ा है क्यों यह wouldn ' टी संभव हो सकता है, या कैसे यह दौर पाने के लिए?
तो, इस उदाहरण में:
public interface IMyObject<in T> where T : IBaseObject
{
T Activity { get; set; }
}
कार्य नहीं करेगा ...
...., क्योंकि आप नहीं मिलता है और गतिविधि संपत्ति सेट कर सकते हैं ।
इस उदाहरण में, मैं ऐसा करने की जरूरत:
public interface IMyObject<out T> where T : IBaseObject
{
T Activity { get; }
}
आशा व्यक्त की कि मदद के लिए सभी में मदद करता है किसी को, और धन्यवाद!
कृपया अपने इंटरफ़ेस की परिभाषा दिखाएं –