मैं CLR स्क्रिप्टिंग के लिए .NET On-the-Fly संकलक लिख रहा हूँ और चाहता हूँ निष्पादन विधि सामान्य स्वीकार्य बनाने:ऑपरेटर और सामान्य वर्गों
object Execute()
{
return type.InvokeMember(..);
}
T Execute<T>()
{
return Execute() as T; /* doesn't work:
The type parameter 'T' cannot be used with the 'as' operator because
it does not have a class type constraint nor a 'class' constraint */
// also neither typeof(T) not T.GetType(), so on are possible
return (T) Execute(); // ok
}
लेकिन मुझे लगता है ऑपरेटर as
बहुत उपयोगी हो जाएगा: यदि परिणाम प्रकार T
तरीका नहीं है एक अपवाद के बजाय null
वापस आ जाएगा! यह करना संभव है?
धन्यवाद आपके उत्तर के लिए बहुत कुछ। मैं इसका उपयोग करूंगा, उत्तर के रूप में जांच और चिह्नित करूंगा। और, मेरे पास अगला कोड उपयोग है: MyClass c = compiler.Execute(); मुझे लगता है कि यह MyClass सी = compiler.Execute() MyClass के रूप में बेहतर है; (अंदर जांचें तो बाहर बेहतर है, मुझे लगता है) –
abatishchev
लेकिन चेक अभी भी बाहर की जरूरत है - शून्य के लिए जांच! :) उपयोगकर्ता को 'MyClass' के रूप में लिखकर, आप इसे और अधिक स्पष्ट करते हैं कि शून्य की जांच आवश्यक है। –
एचएम .. ऐसा लगता है कि आप सही हैं! मैं 'सामान्य' निष्पादन() का उपयोग करने की अनुशंसा करूंगा, लेकिन अंत उपयोगकर्ता के लिए यह 'असामान्य' निष्पादन(), 'जेनेरिक प्रयोग' के अलावा कुछ भी उपयोगी हो सकता है :) – abatishchev