クラス名のエイリアスを作成したい。次の構文は完璧です。
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
しかし、それはコンパイルされません。
例
注この例は、便宜上提供されています。システム全体の設計を変更することを提案して、この特定の問題を解決しようとしないでください。この例の存在または欠如は、元の質問を変更しません。
一部の既存のコードは、静的クラスの存在に依存しています。
public static class ColorScheme
{
...
}
この配色は、Outlook2003の配色です。Outlook 2003の配色を維持しながら、Outlook2007の配色を導入したいと思います。
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
しかし、私はまだコードがと呼ばれる静的クラスの存在に依存しているという事実に直面していColorScheme
ます。私の最初の考えは、次のColorScheme
いずれOutlook2003
かから継承するクラスを作成することでしたOutlook2007
。
public static class ColorScheme : Outlook2007ColorScheme
{
}
ただし、静的クラスから継承することはできません。
私の次の考えは静的ColorScheme
クラスを作成することでしたが、makeOutlook2003ColorScheme
とOutlook2007ColorScheme
classesは非静的です。次に、静的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#ではこれを行うことはできません」という回答を追加してください。それを承認済みの回答としてマークできます。同じ質問への回答が必要な他の人は、この質問、受け入れられた回答、および役立つ場合とそうでない場合があるいくつかの回避策を見つけるでしょう。
この質問を締めくくりたいと思います。