मैं निम्नलिखित सहायक विधि है:सामान्य प्रकार पैरामीटर के लिए कोई मुक्केबाजी या प्रकार पैरामीटर रूपांतरण
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
:
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
मैं एक सहायक में एक और तरीका के अंदर से इस विधि का उपयोग करना चाहते हैं लेकिन तब मैं त्रुटि मिलती है:,
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'MyExtensions.CreateRequest()'. There is no boxing conversion or type parameter conversion from 'T' to 'MyNamespace.Request'.
वहाँ प्रकार "टी" कास्ट करने के लिए एक रास्ता है ताकि CreateRequest woul समस्याओं के बिना इसका उपयोग करें?
संपादित करें:
मैं जानता हूँ कि मैं दो बातें कर सकते हैं:
- CreateRequest पर बाधाओं को ढीला या
- मानचित्र में contraints कस।
लेकिन मैं पहले ऐसा नहीं कर सकता, क्योंकि CreateRequest I में अनुरोध वर्ग के उपयोगकर्ता गुण हैं, और मैं दूसरा नहीं कर सकता, क्योंकि मैं मानचित्र के साथ अन्य प्रकार (अनुरोध से प्राप्त नहीं होता) का उपयोग करता हूं समारोह।
इसका मतलब है: "या तो या कोई नहीं" –