如何在编译时动态改变namespace?

lzxgy8008 2016-11-04 09:14:53
在下直接上代码吧。目标如下,如果定义了DEBUG的话,namespace就是Test,否则就是TestB,具体该怎么写呢?或者有其他什么好方法,请不吝赐教。
namespace TestB
{
# if DEBUG
[DataContract(Namespace = "Test", Name = "AAA")]
#endif
public class Program
{}
}
...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
3L不就是给你这样写了吗,而且还有多个条件定义……
lzxgy8008 2016-11-04
  • 打赏
  • 举报
回复
同志们,我找到答案了,贴出来给大家参考吧 #if DEBUG namespace TestB #else namespace Test #endif { public class Program { } }
EnForGrass 2016-11-04
  • 打赏
  • 举报
回复
既然要修改为何要定义,那你不如定义另一个命名空间,纠结这些问题没用的
xuzuning 2016-11-04
  • 打赏
  • 举报
回复
namespace 是代码块的外包装,用于将代码块与其他代码块隔离开来 即便是可以动态改变 namespace 的名字,那实际的意义是什么呢? 代码块内部并不涉及 namespace,其他的代码块可通过 namespace 的名字 来访问你的代码块中被授权的资源 如果 namespace 被改变了,那么从外部又如何访问到你呢
lzxgy8008 2016-11-04
  • 打赏
  • 举报
回复
引用 5 楼 assky124 的回复:
动态编译+ 反射调用吧
用条件编译不行吗?关键不知道哪个attribute可以指定namespace
assky124 2016-11-04
  • 打赏
  • 举报
回复
动态编译+ 反射调用吧
lzxgy8008 2016-11-04
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
#if DEBUG
#elif NET45
#else
#endif
感谢版主积极回复!实际上我不清楚的是如何写改变namespace的代码(如果datacontract不合适,那应该用什么attribute),以及把这段代码放在什么地方。 # if DEBUG //how to change the namespace to Test here and where to place this piece of code #endif
  • 打赏
  • 举报
回复
#if DEBUG
#elif NET45
#else
#endif
lzxgy8008 2016-11-04
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
为什么要这样,数据契约不就是用来约定的么?这种东西怎么要改?
哦,我不是说要用DataContract来实现,我只是想要达到这样的目的,那我改一下好了:)
  • 打赏
  • 举报
回复
为什么要这样,数据契约不就是用来约定的么?这种东西怎么要改?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧