तो मैं इस तरह एक विन्यास है कि एक ConfigurationSection/ConfigurationElementCollection मिल गया है:मैं कॉन्फ़िगरेशनसेक्शन के साथ TypeConverters का उपयोग कैसे कर सकता हूं?
public class MimeFormatElement: ConfigurationElement
{
#region Constructors
/// <summary>
/// Predefines the valid properties and prepares
/// the property collection.
/// </summary>
static MimeFormatElement()
{
// Predefine properties here
_mimeFormat = new ConfigurationProperty(
"mimeFormat",
typeof(MimeFormat),
"*/*",
ConfigurationPropertyOptions.IsRequired
);
}
private static ConfigurationProperty _mimeFormat;
private static ConfigurationPropertyCollection _properties;
[ConfigurationProperty("mimeFormat", IsRequired = true)]
public MimeFormat MimeFormat
{
get { return (MimeFormat)base[_mimeFormat]; }
}
}
public class MimeFormat
{
public string Format
{
get
{
return Type + "/" + SubType;
}
}
public string Type;
public string SubType;
public MimeFormat(string mimeFormatStr)
{
var parts = mimeFormatStr.Split('/');
if (parts.Length != 2)
{
throw new Exception("Invalid MimeFormat");
}
Type = parts[0];
SubType = parts[1];
}
}
और स्पष्ट रूप से मैं एक TypeConverter है कि वास्तव में करता है की जरूरत है:
<mimeFormats>
<add mimeFormat="text/html" />
</mimeFormats>
और यहाँ है कि कैसे मैं mimeFormats संभाल कुछ (इस खाली खोल के बजाय):
public class MimeFormatConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
throw new NotImplementedException();
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
throw new NotImplementedException();
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
throw new NotImplementedException();
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
throw new NotImplementedException();
}
}
कैसे मैं एक TypeConverter उस प्रकार conve की अनुमति देगा सेट कर सकता हूं स्ट्रिंग से/स्ट्रिंग तक? मैंने एमएसडीएन उदाहरणों का उपयोग करने की कोशिश की है लेकिन मुझे त्रुटि संदेश मिल रहा है:
टाइप कनवर्टर System.String से परिवर्तित नहीं हो सकता है।
अनिवार्य रूप से, यह कैसे स्थापित किया जा सकता है ताकि यह केवल कॉन्फ़िगरेशनसेक्शन जो भी करने का प्रयास कर रहा हो, उसके साथ काम करेगा?
आपको मैन्युअल रूप से 'टाइप कनवर्टर' प्राप्त करने की आवश्यकता नहीं है। 'TypeDescriptor.GetConverter ... हटाएं। जैसा आपने किया था, संपत्ति के लिए 'टाइप कनवर्टर' को आश्वस्त करना या स्वयं टाइप करना पर्याप्त है। –