【问题标题】:Is it possible to reverse alias a c# namespace?是否可以反转别名 c# 命名空间?
【发布时间】:2012-03-05 18:21:49
【问题描述】:

不知道如何表达这个问题,但这是问题所在。

我设计了一个命名空间:my.foo.bar

在我的一个课程中,我不小心将命名空间命名为 my.foo.Bar

我想修复命名空间大小写,以便每个人都在同一页面上,但这是一个共享库,我无法使用它重新编译所有程序。

那么,我是否可以创建一些东西,本质上将my.foo.Bar 重定向到my.foo.bar

【问题讨论】:

  • 使用 VB.NET 访问您的库——它不区分大小写。 ;-)(好吧,开个玩笑)

标签: c# .net namespaces


【解决方案1】:

不是全局的。您可以使用namespace aliases,但只能在客户端代码中使用。听起来您可能需要做出重大改变。

如果只有一个或两个类,一种方法是将它们从my.foo.Bar 复制到my.foo.bar,使用Obsolete attribute 弃用坏命名空间中的那些,然后慢慢移动客户端到正确的。

如果类是无状态的,那么 my.foo.Bar 命名空间中的类可以委托给 @JohnSaunders 建议的 my.foo.bar 命名空间中的类,但前提是客户端对该类的使用不排除委托(一切都是方法或属性,该类的类型不通过反射等使用)。

【讨论】:

  • 在这种情况下,它是一个小类,4个属性和3个重载的构造函数。
【解决方案2】:

您能做的最好的事情是获取名称错误的命名空间中的所有类型,并在正确的命名空间中创建它们的版本。这些可以委托给错误的命名空间版本。

【讨论】:

  • 也许是using myBar = my.foo.Bar。约束“不可修改的共享库”极大地限制了选项。
  • @John 我该怎么做?从名字不好的命名空间中的类继承?这够好吗?
  • 我使用 ReSharper,所以我会简单地告诉它创建委派成员。
猜你喜欢
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多