Jonas Stawski
Jonas Stawski

Reputation: 6752

Unable to find a converter that supports conversion to/from string for the property of type 'Type'

I'm writing a custom config class in C# and .NET 3.5. One of the properties should be of type System.Type. When I run the code I get the error mentioned in the title.

[ConfigurationProperty("alertType", IsRequired = true)]
public Type AlertType
{
    get { return (Type)this["alertType"]; }
    set { this["alertType"] = value; }
}

The config file looks like this:

<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" />

The .net framework is able to cast a string into System.Type, because the configSections of the config file has a type attribute. The question is how do they do it.

Upvotes: 24

Views: 5811

Answers (3)

Shawn Hall
Shawn Hall

Reputation: 990

I know this is old, but I think this is actually the correct answer:

[TypeConverter(typeof(TypeNameConverter))]
[ConfigurationProperty("alertType", IsRequired=true)]
public Type AlertType
{
    get { return this[ "alertType" ] as Type; }
    set { this[ "alertType" ] = value; }
}

Adding the TypeNameConverter makes the transformation from String to Type happen without using Type.GetType().

Upvotes: 67

BFree
BFree

Reputation: 103760

You can try using the TypeNameConverter class. It has two methods you may be interested in:

ConvertToString and ConvertFromString

Upvotes: 5

Preet Sangha
Preet Sangha

Reputation: 65536

I think you're looking for Type.GetType Method (String)

Upvotes: 5

Related Questions