c# - 您可以在运行时更改 Type 的 Name 属性的值吗?

标签 c# reflection

是否可以更改/覆盖类型的名称属性?

给定类定义:

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/

相关文章:

c# - 使用 Moq 在 NUnit 中模拟 HttpContext.GetGlobalResourceObject

c# - Package.Open()异常: Access to path is denied

PHP 相当于 send 和 getattr?

c# - 使用 System.Reflection

c# - 通过反射访问 protected 字段时出现 FieldAccessException

scala - 将 Java 对象(实际上是 Scala Map)转换为 Scala Map

c# - 将 double 转换为日期时间?

c# - 仅作用于 C# 中具有相同文件名结构的文件

c# - 如何根据扩展名获取文件类型信息? (不是 MIME)在 c# 中

c# - 获得公共(public)领域?