我定义了一个自定义TypeConverter
和关联的自定义TypeDescriptionProvider
,TypeDescriptor
以便在从 REST Web 服务(使用 ASP.NET Core)返回值时自动将我的类型转换为字符串。
但是,我现在注意到在我的应用程序的其他地方(例如,当我序列化 XML 以保存我的配置文件,或在 WPF 中加载 XAML 时)我的自定义TypeConverter
正在被调用。
有没有办法限制我的自定义类型转换器/描述提供程序/描述符,以便它们仅在我的 Web 服务程序集中使用?
更多信息
我的内部对象没有使用[TypeConverter()]
属性来指定要使用的类型转换器。
正如答案所暗示的,我正在使用 AutoMapper 进行从内部对象到数据传输对象的映射。AutoMapper 使用TypeDescriptor
/TypeConverter
将我的对象的属性自动映射到字符串。我希望这种行为只有AutoMapper 使用这个自定义类型转换器。
但是,类型转换器似乎是全局注册的:TypeDescriptor.AddProvider(customerProvider, myType)
我看不到将其限制为仅某些组件的方法。到目前为止,我唯一的想法是以某种方式使用GetComponentName()
(ICustomTypeDescriptor
但这似乎总是null
)或在单独的AppDomain
. 还有其他解决方案吗?