为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C#中为类名加上别名,而不必在使用该类的每个文件中添加一行代码?

如何在C#中为类名加上别名,而不必在使用该类的每个文件中添加一行代码?

C#
当年话下 2019-11-18 14:05:38
我想为一个类名创建一个别名。以下语法将是完美的:public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName{   ...}public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;但不会编译。例注意此示例仅出于方便提供。不要通过建议更改整个系统的设计来尝试解决此特定问题。此示例的存在与否不会更改原始问题。现有的一些代码取决于静态类的存在:public static class ColorScheme{   ...}此配色方案是Outlook 2003配色方案。我想引入一个Outlook 2007配色方案,同时保留Outlook 2003配色方案:public static class Outlook2003ColorScheme{   ...}public static class Outlook2007ColorScheme{   ...}但是我仍然面对这样一个事实,即代码依赖于称为ColorScheme的静态类的存在。我的第一个想法是创建一个ColorScheme类,该类将来自Outlook2003或Outlook2007:public static class ColorScheme : Outlook2007ColorScheme{}但是您不能继承静态类。我的下一个想法是创建静态ColorScheme类,但使Outlook2003ColorScheme和Outlook2007ColorScheme类为非静态。然后,静态ColorScheme类中的静态变量可以指向“ true”配色方案:public static class ColorScheme{    private static CustomColorScheme = new Outlook2007ColorScheme();    ...}private class CustomColorScheme {    ...}private class Outlook2008ColorScheme : CustomColorScheme {    ...}private class Outlook2003ColorScheme : CustomColorScheme {   ...}但这需要我将完全由只读静态Colors组成的类转换为可重写的属性,然后我的ColorScheme类需要将30种不同的属性获取器转换为所包含的对象。只是打字太多了。所以我的下一个想法是给该类起别名:public static ColorScheme = Outlook2007ColorScheme;但这不能编译。如何将静态类别名为另一个名称?更新:有人可以添加答案“您不能在C#中执行此操作”,以便我将其标记为可接受的答案。任何其他想要回答同一问题的人都会找到该问题,被接受的答案以及许多可能有用或可能没有有用的解决方法。我只想结束这个问题。
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

如果更改原始类名,则可以使用导入别名作为typedef替代来重写从属代码:


using ColorScheme = The.Fully.Qualified.Namespace.Outlook2007ColorScheme;

就像常规usings 一样,它必须放在文件/命名空间的顶部。


不过,我不知道这是否可行。


查看完整回答
反对 回复 2019-11-18
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以通过添加以下代码行来为您的班级添加别名:


using Outlook2007ColorScheme = YourNameSpace.ColorScheme;


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 963 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信