【问题标题】:rename NameSpace in reflection?在反射中重命名命名空间?
【发布时间】:2018-10-11 15:58:16
【问题描述】:

当代码尝试通过反射获取命名空间名称时,使用:

typeof(MyNamespace.MyClass).Namespace;

或其他方法,我希望命名空间名称返回我预定义的字符串。

这不起作用:

typeof(MyNamespace.MyClass).Namespace  = "helloWorld";

有什么办法吗?

附言请不要发布诸如“更改源代码中的命名空间”之类的答案...

【问题讨论】:

  • System.Type.Namespace 可以理解是一个只读属性(即没有设置器)。我想在运行时更改命名空间是不可能的,这似乎是一个非常危险的过程(老实说,我现在想不出用例)
  • any ways? 更改源代码中的命名空间。
  • 我想知道是什么要求导致了这个问题。
  • @T.Todua 请尝试解释您的要求。这包含XY problem 的所有商标,如果我们了解您为什么需要这样做,您可能会得到更好的建议。
  • Touda,你和我们一样,磨擦“镜头”的类型(纯 = 未着色) 你应该用它来查看蓝色汽车是黄色的。你认为答案是什么?或者另一种方式,如何使用(Windows)计算器应用程序,将视频文件从 Youtube 复制到您的磁盘。当应用程序使用命名空间时,它只能通过重新编译或使用某些 IL 工具进行更改来更改,但不能在运行时更改。即使有可能(通过更改内存),防病毒解决方案也可能会捕获这种更改正在运行的应用程序代码的尝试。这不是一个好主意。请求是错误的,或者理解不好

标签: c# reflection namespaces


【解决方案1】:

处理类型和其他程序集元数据的部分反射 API 是只读的。您不能更改或影响任何此类调用(包括命名空间)返回的任何值 - 它们只是读取程序集的元数据。

要实现您的要求,您需要更改和重新编译源代码(直接或在反编译 IL 之后)并在编译前重写命名空间。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 2023-03-25
    • 1970-01-01
    • 2018-07-18
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多