Tôi muốn tạo bí danh cho tên lớp. Cú pháp sau sẽ hoàn hảo:
public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
...
}
public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
nhưng nó sẽ không biên dịch.
Thí dụ
Lưu ý Ví dụ này chỉ được cung cấp để thuận tiện. Đừng cố gắng giải quyết vấn đề cụ thể này bằng cách đề xuất thay đổi thiết kế của toàn bộ hệ thống. Sự hiện diện hoặc thiếu của ví dụ này không thay đổi câu hỏi ban đầu.
Một số mã hiện có phụ thuộc vào sự hiện diện của một lớp tĩnh:
public static class ColorScheme
{
...
}
Phối màu này là phối màu Outlook 2003. tôi muốn giới thiệu một sơ đồ màu Outlook 2007, trong khi vẫn giữ lại sơ đồ màu Outlook 2003:
public static class Outlook2003ColorScheme
{
...
}
public static class Outlook2007ColorScheme
{
...
}
Nhưng tôi vẫn phải đối mặt với thực tế là mã phụ thuộc vào sự hiện diện của một lớp tĩnh được gọi ColorScheme
. Suy nghĩ đầu tiên của tôi là tạo một ColorScheme
lớp mà tôi sẽ kế thừa từ một trong hai Outlook2003
hoặc Outlook2007
:
public static class ColorScheme : Outlook2007ColorScheme
{
}
nhưng bạn không thể kế thừa từ một lớp tĩnh.
Suy nghĩ tiếp theo của tôi là tạo ColorScheme
lớp tĩnh , nhưng tạo Outlook2003ColorScheme
và Outlook2007ColorScheme
các lớp không tĩnh. Sau đó, một biến tĩnh trong ColorScheme
lớp tĩnh có thể trỏ đến phối màu "true":
public static class ColorScheme
{
private static CustomColorScheme = new Outlook2007ColorScheme();
...
}
private class CustomColorScheme
{
...
}
private class Outlook2008ColorScheme : CustomColorScheme
{
...
}
private class Outlook2003ColorScheme : CustomColorScheme
{
...
}
nhưng điều đó sẽ yêu cầu tôi chuyển đổi một lớp bao gồm các Màu tĩnh chỉ đọc thành các thuộc tính có thể ghi đè, và sau đó ColorScheme
lớp của tôi sẽ cần có 30 bộ nhận thuộc tính khác nhau đưa vào đối tượng được chứa.
Đó chỉ là quá nhiều đánh máy.
Vì vậy, suy nghĩ tiếp theo của tôi là đặt bí danh cho lớp:
public static ColorScheme = Outlook2007ColorScheme;
Nhưng điều đó không biên dịch.
Làm cách nào để đặt bí danh một lớp tĩnh thành một tên khác?
Cập nhật: Ai đó có thể vui lòng thêm câu trả lời "Bạn không thể làm điều này trong C #" , vì vậy tôi có thể đánh dấu đó là câu trả lời được chấp nhận. Bất kỳ ai khác muốn câu trả lời cho cùng một câu hỏi sẽ tìm thấy câu hỏi này, câu trả lời được chấp nhận và một số cách giải quyết có thể hữu ích hoặc có thể không.
Tôi chỉ muốn kết thúc câu hỏi này.