我的项目的基类上有一个 TypeConverter 。

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

我有许多继承这个基础的类

class TitleCode : CodeBase
class PreferenceCode : CodeBase

当调用类型转换器 (ValueProvider.ConvertSimpleType) 的事物时,它不会创建上下文,因此 ConvertFrom 不会被告知目标类型,因此它可以执行转换。

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

有人遇到过这个问题吗?如果是这样,你有解决办法吗?

有帮助吗?

解决方案

我们最终做到了这一点;

  1. 获取对象的 TypeConverter
  2. 创建实现 ITypeDescriptorContext 的代理上下文类
  3. 创建具有所需类型集的属性描述符

对于上述情况,CanConvertFrom 方法中添加了对 null 上下文的检查

MS 有点错过了这一点,在我看来,你转换到的类型应该是可用的。这种解决方法仅在使用我们实现的 ModelBinder 时有效。

啊,好吧,我克服了它

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top