gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:42:20 28 4
gpt4 key购买 nike

我想为类名创建一个别名。以下语法将是完美的:

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 类,我将从 Outlook2003Outlook2007 继承:

public static class ColorScheme : Outlook2007ColorScheme
{
}

但是你不能从静态类继承。

我的下一个想法是创建静态 ColorScheme 类,但使 Outlook2003ColorSchemeOutlook2007ColorScheme 类成为非静态类。然后静态 ColorScheme 类中的静态变量可以指向任一“真实”配色方案:

public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}

private class CustomColorScheme
{
...
}

private class Outlook2008ColorScheme : CustomColorScheme
{
...
}

private class Outlook2003ColorScheme : CustomColorScheme
{
...
}

但这需要我将一个完全由只读静态颜色组成的类转换为可覆盖的属性,然后我的 ColorScheme 类需要将 30 个不同的属性 getter thunk 向下转换到包含的对象中。

输入太多了。

所以我的下一个想法是给这个类起个别名:

public static ColorScheme = Outlook2007ColorScheme;

但这并不能编译。

如何将静态类别名为另一个名称?


更新:有人可以添加答案“您不能在 C# 中执行此操作”,以便我可以将其标记为已接受的答案。任何其他想要同一问题的答案的人都会发现这个问题、已接受的答案以及一些可能有用或可能没有用的解决方法。

我只想结束这个问题。

最佳答案

你不能。您可以做的下一个最好的事情是在使用该类的文件中使用using 声明。

例如,您可以使用导入别名(作为准 typedef 替代品)重写相关代码:

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

不幸的是,这需要进入使用该名称的每个范围/文件。

因此我不知道这对您的情况是否可行。

关于c# - 如何在 C# 中为类命名别名,而不必向使用该类的每个文件添加一行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com