Bir sınıf adı için bir takma ad oluşturmak istiyorum. Aşağıdaki sözdizimi mükemmel olur:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
ama derlenmeyecek.
Misal
Not Bu örnek yalnızca kolaylık sağlamak için verilmiştir. Tüm sistemin tasarımını değiştirmeyi önererek bu sorunu çözmeye çalışmayın. Bu örneğin varlığı veya yokluğu orijinal soruyu değiştirmez.
Bazı mevcut kodlar, statik bir sınıfın varlığına bağlıdır:
public static class ColorScheme
{
...
}
Bu renk düzeni, Outlook 2003 renk düzenidir. Outlook 2003 renk düzenini korurken bir Outlook 2007 renk düzeni tanıtmak istiyorum:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Ama hala kodun adı verilen statik bir sınıfın varlığına bağlı olduğu gerçeğiyle karşı karşıyayım ColorScheme. İlk düşüncem, ColorSchemeya Outlook2003da şunlardan miras alacağım bir sınıf oluşturmaktı Outlook2007:
public static class ColorScheme : Outlook2007ColorScheme
{
}
ancak statik bir sınıftan miras alamazsınız.
Bir sonraki düşüncem, statik ColorSchemesınıfı oluşturmak , ancak statik olmayan yapmak Outlook2003ColorSchemeve Outlook2007ColorSchemesınıflamaktı. Ardından, statik ColorSchemesınıftaki statik bir değişken, "doğru" renk şemalarından birine işaret edebilir:
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
ancak bu, tamamen okunabilir statik Renklerden oluşan bir sınıfı, geçersiz kılınabilen özelliklere dönüştürmemi gerektirecek ve daha sonra ColorSchemesınıfımın, içerilen nesneye inen 30 farklı özellik alıcıya sahip olması gerekecekti.
Bu çok fazla yazmak.
Bu yüzden bir sonraki düşüncem sınıfı takma ad vermek oldu:
public static ColorScheme = Outlook2007ColorScheme;
Ama bu derlemez.
Statik bir sınıfı başka bir ada nasıl takma ad verebilirim?
Güncelleme: Birisi lütfen "Bunu C # ile yapamazsınız" cevabını ekleyebilir mi , böylece bunu kabul edilen cevap olarak işaretleyebilirim. Aynı sorunun cevabını isteyen başka biri bu soruyu, kabul edilen cevabı ve yararlı olabilecek veya olmayabilecek bir dizi geçici çözümü bulacaktır.
Sadece bu soruyu kapatmak istiyorum.
