문제

I have a TypeConverter on the base class in my project.

[TypeConverter(typeof(CodeTypeConverter))]
abstract class CodeBase

I have a number of classes which inherit this base

class TitleCode : CodeBase
class PreferenceCode : CodeBase

When the thing that calls the type converter (ValueProvider.ConvertSimpleType) it does not create a context and so ConvertFrom is not informed of the destination type, so it can do the conversion.

public override object ConvertFrom(
  ITypeDescriptorContext context, // this is null
  CultureInfo culture,
  object value)

Has anyone come across this problem? And, if so, do you have a work around?

도움이 되었습니까?

해결책

We did this in the end by;

  1. getting the TypeConverter for the object
  2. creating a proxy context class implementing ITypeDescriptorContext
  3. creating a property descriptor with the required type set

a check for null context was add to the CanConvertFrom method, for cases such as above

Its a bit of a miss from MS this, it seems to me that the type your converting to should be available. This work around only works when the ModelBinder we implemented is being used.

Ah well, I got over it

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top