Saya ingin membuat alias untuk nama kelas. Sintaks berikut akan menjadi sempurna:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
tetapi tidak dapat dikompilasi.
Contoh
Catatan Contoh ini diberikan hanya untuk kenyamanan. Jangan mencoba memecahkan masalah khusus ini dengan menyarankan untuk mengubah desain seluruh sistem. Ada atau tidaknya contoh ini tidak mengubah pertanyaan awal.
Beberapa kode yang ada bergantung pada keberadaan kelas statis:
public static class ColorScheme
{
...
}
Skema warna ini adalah skema warna Outlook 2003. saya ingin memperkenalkan skema warna Outlook 2007, dengan tetap mempertahankan skema warna Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Tetapi saya masih dihadapkan pada fakta bahwa kode tersebut bergantung pada keberadaan kelas statis yang disebut ColorScheme
. Pikiran pertama saya adalah membuat ColorScheme
kelas yang akan saya warisi dari salah satu Outlook2003
atau Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
tetapi Anda tidak dapat mewarisi dari kelas statis.
Pikiran saya selanjutnya adalah membuat ColorScheme
kelas statis , tetapi membuat Outlook2003ColorScheme
dan Outlook2007ColorScheme
kelas non-statis. Kemudian variabel statis di ColorScheme
kelas statis dapat mengarah ke salah satu skema warna "benar":
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
tetapi itu akan mengharuskan saya untuk mengubah kelas yang terdiri dari keseluruhan Warna statis yang dapat dibaca menjadi properti yang dapat diganti, dan kemudian ColorScheme
kelas saya harus memiliki 30 pengambil properti berbeda yang dimasukkan ke dalam objek yang terkandung.
Itu terlalu banyak mengetik.
Jadi pikiran saya selanjutnya adalah membuat alias kelas:
public static ColorScheme = Outlook2007ColorScheme;
Tapi itu tidak bisa dikompilasi.
Bagaimana cara membuat alias kelas statis menjadi nama lain?
Pembaruan: Bisakah seseorang menambahkan jawaban "Anda tidak dapat melakukan ini di C #" , jadi saya dapat menandainya sebagai jawaban yang diterima. Orang lain yang menginginkan jawaban untuk pertanyaan yang sama akan menemukan pertanyaan ini, jawaban yang diterima, dan sejumlah solusi yang mungkin, atau mungkin tidak, berguna.
Saya hanya ingin menutup pertanyaan ini.