クラス名のエイリアスを作成したい。次の構文は完璧です。
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
しかし、それはコンパイルされません。
例
注この例は、便宜上のみ提供されています。システム全体の設計を変更することを提案して、この特定の問題を解決しようとしないでください。この例の存在または欠如は、元の質問を変更しません。
一部の既存のコードは、静的クラスの存在に依存しています。
public static class ColorScheme
{
...
}
この配色は、Outlook 2003 の配色です。Outlook 2003 の配色を維持しながら、Outlook 2007 の配色を導入したい:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
しかし、コードが という静的クラスの存在に依存しているという事実にまだ直面していますColorScheme
。私の最初の考えは、またはのいずれかColorScheme
から継承するクラスを作成することでした:Outlook2003
Outlook2007
public static class ColorScheme : Outlook2007ColorScheme
{
}
ただし、静的クラスから継承することはできません。
次に考えたのは、静的ColorScheme
クラスを作成することでしたがOutlook2003ColorScheme
、Outlook2007ColorScheme
クラスを非静的にしました。次に、静的ColorScheme
クラスの静的変数は、「真の」配色のいずれかを指すことができます。
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
しかし、そのためには、読み取り専用の静的な Color だけで構成されたクラスをオーバーライド可能なプロパティに変換する必要があり、そのColorScheme
クラスでは、含まれるオブジェクトに 30 の異なるプロパティ ゲッターをサンクする必要があります。
それはタイピングしすぎです。
だから私の次の考えは、クラスをエイリアスすることでした:
public static ColorScheme = Outlook2007ColorScheme;
しかし、それはコンパイルされません。
静的クラスを別の名前にエイリアスするにはどうすればよいですか?
更新:誰かが「C#ではこれを行うことはできません」という回答を追加してください。受け入れられた回答としてマークできます。同じ質問に対する回答が必要な人は、この質問、受け入れられた回答、および役立つ場合とそうでない場合があるいくつかの回避策を見つけることができます。
この質問は締め切りたいと思います。