TypeConverter and Generics

K

Kent Boogaart

Hi,

As far as I can tell, it is not possible to use the TypeConverter
infrastructure with generic types. Say you have this type:

public struct Id<T> where T : IComparable
{ ... }

And you want to convert from strings to Id<T> and vice-versa. So you write a
generic TypeConverter:

public IdConverter<T> : TypeConverter
{ ... }

But then you'll find you can't apply the generic type converter:

[TypeConverter(typeof(IdConverter<T>))] //this will not compile
public struct Id<T> where T : IComparable
{ ... }

You can attempt to hack together a solution based on the
ITypeDescriptorContext parameter to the various TypeConverter methods.
However, this is unreliable since this parameter isn't always passed in (and
certainly wasn't by VS.NET when I tried it). As far as I can tell, the
possible workarounds are:
1. Implement a generic type converter and apply it manually to each Id<T>
property instead of applying it only once to the Id<T> struct.
2. Forgo generics and use subclasses, each with their own TypeConverter
applied.
3. Don't use type converters.

Can anyone tell me whether I'm missing something?

Thanks,
Kent
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top