是否可以更改/覆盖类型的名称属性?
给定类定义:
class Sample
{}
你能改变 typeof(Sample).Name
返回的值吗?
我正在使用自定义序列化库,它在源代码中使用了 typeof(T).Name
:
writer.WriteStartElement(typeof(T).Name);
writer.WriteValue(item);
writer.WriteEndElement();
最佳答案
不,您不能在运行时更改Type
的.Name
。但是,大多数序列化库允许您对名称的处理进行一些控制,方法是提供自定义“ Binder ”(等),或者通过使用属性注释类型以指示要使用的首选名称(注意:大多数库允许属性还允许通过序列化库的运行时配置提供名称。
那么一个重要的问题是:这里使用的序列化库是什么?
如果序列化库不支持这个,并且不能改变,那么唯一的替代方法(除了重命名 Sample
)就是创建一个类型(手动,或者通过 TypeBuilder
在运行时)看起来 像原始类型,但具有不同的代码,并且类似地:创建在两种类型之间转换的代码。
关于c# - 您可以在运行时更改 Type 的 Name 属性的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24449308/