2009-01-18 14 views
10

मैं प्रकार ISimpleCache<IBrokeredDataObject> के एक वर्ग है कि मैं app.config में एक प्रकार उर्फ ​​(तब एक प्रकार) के रूप में जोड़ना चाहते हैं है फ़ाइल सहितएकता App.config फ़ाइल में एक सामान्य वर्ग

लाइन

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache<IBrokeredDataObject>, MyApplication" /> 

<> के कारण स्पष्ट रूप से गलत है, हालांकि मैं उनसे बचने के लिए आश्वस्त नहीं हूं;

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" type="MyApplication.ISimpleCache&lt;IBrokeredDataObject&gt;, MyApplication" /> 

या तो सही है।

मैं वर्तमान में एकता का उपयोग करने के लिए अपने कोड को अलग कर रहा हूं, इसलिए इसे शीघ्रता से जांचने के लिए एक संकलित कोड बेस से बहुत दूर हूं, और यहां कुछ पुष्टि प्राप्त करने की उम्मीद थी।

उत्तर

21

this ब्लॉग पोस्ट देखें:

आदेश, एक सामान्य प्रकार बारे में उपयोग करने के लिए `` `सामान्य प्रकार है कि इंटरफेस/वर्ग को मिलने वाले की संख्या से पीछा करें।

और एक ही पृष्ठ में एक टिप्पणी ने कहा:

आदेश जेनेरिक आप कोष्ठक ([[ ]]) का उपयोग करने की जरूरत है एक निरंतर प्रकार का उपयोग करने के लिए।

तो मुझे लगता है कि आपके विन्यास फ़ाइल कुछ इस तरह होना चाहिए:

<typeAlias alias="ISimpleCacheOfIBrokeredDataObject" 
    type="MyApplication.ISimpleCache`1[[MyApplication.IBrokeredDataObject, MyApplication]], MyApplication" /> 

नोट "गंभीर लहजे" या "backquote" चरित्र का उपयोग (`` ), not the normal single quote ( ' `)।

+3

यह जोड़ने के लायक है के साथ एक सामान्य प्रकार है के साथ सामान्य प्रकार कि यह 'नहीं' होना चाहिए (सूक्ष्म लेकिन महत्वपूर्ण अंतर) – tjrobinson

+0

@tjrobinson हो गया। धन्यवाद। –

1

और यह सामान्य पैरामीटर के रूप में दृढ़ता से हस्ताक्षरित प्रकार है। ,

<section name="doubleFamilyConfig" 
     type="ConfigTest.Configuration.FamilySection`2[ 
       [ConfigTest.Types.Child, ConfigTest], 
       [ConfigTest.Types.Parent, ConfigTest] 
       ], 
       ConfigTest" /> 

यदि आप चाहें तो आप एक अलग लाइन पर प्रत्येक प्रकार का उपयोग कर सकते हैं ताकि यह समझना आसान है:

<typeAlias alias="IPublisherOfXElement" type="MyLib.IX.IPublisher`1[[System.Xml.Linq.XElement, System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], MyLib.IX" /> 
2

और यह कैसे आप एक प्रकार है कि दो सामान्य प्रकार प्राप्त करता है का उपयोग करें। ध्यान दें कि पहला ब्रैकेट प्रकार के बाद सही होना चाहिए (FamilySection`2 ** [**)।

13

मैंने उपर्युक्त उत्तर पर टिप्पणी की होगी, लेकिन मेरा स्कोर पर्याप्त नहीं है।

वाक्य रचना Type.GetType विधि (स्ट्रिंग) यहाँ के लिए प्रलेखित है: http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx

उदाहरण के एक गुच्छा है, जिनमें से कुछ मैं नीचे चिपकाया रहे हैं।

एक प्रकार तर्क के साथ एक सामान्य प्रकार

Type.GetType("MyGenericType`1[MyType]") 

दो प्रकार तर्क साथ एक सामान्य प्रकार

Type.GetType("MyGenericType`2[MyType,AnotherType]") 

दो विधानसभा योग्य प्रकार तर्क के साथ एक सामान्य प्रकार

Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]") 

एक विधानसभा से योग्य एक विधानसभा से योग्य प्रकार तर्क

Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly") 

एक सामान्य प्रकार है जिसका प्रकार तर्क दो प्रकार तर्क

Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]") 
+0

आप प्रकार और असेंबली मूल्य को सर्वश्रेष्ठ तरीके से कैसे समझ सकते हैं? मैं कुछ वास्तविक सरल चीजों को एक int या guid जैसे लोड करने की कोशिश कर रहा हूं और वास्तव में निराश हो रहा हूं क्योंकि यूनिटी इसे किसी भी पसंद नहीं कर रही है और अपवाद संदेश केवल थोड़े उपयोगी हैं। उदाहरण के लिए, यह काम नहीं करता है: