相关疑难解决方法(0)

如何在C#中为类名设置别名,而不必为每个使用该类的文件添加一行代码?

我想为类名创建一个别名.以下语法将是完美的:

public class LongClassNameOrOneThatContainsVersionsOrDomainSpecificName
{
   ...
}

public class MyName = LongClassNameOrOneThatContainsVersionOrDomainSpecificName;
Run Code Online (Sandbox Code Playgroud)

但它不会编译.


注意此示例仅供参考.不要试图通过建议改变整个系统的设计来解决这个特殊问题.此示例的存在或缺乏不会改变原始问题.

一些现有代码依赖于静态类的存在:

public static class ColorScheme
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

此配色方案是Outlook 2003配色方案.我想介绍一个Outlook 2007配色方案,同时保留Outlook 2003配色方案:

public static class Outlook2003ColorScheme
{
   ...
}

public static class Outlook2007ColorScheme
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

但我仍然面临这样一个事实,即代码依赖于名为ColorScheme的静态类的存在.我的第一个想法是创建一个ColorScheme类,我将从Outlook2003或Outlook2007下载:

public static class ColorScheme : Outlook2007ColorScheme
{
}
Run Code Online (Sandbox Code Playgroud)

但你不能从静态类下降.

我的下一个想法是创建静态ColorScheme类,但使Outlook2003ColorScheme和Outlook2007ColorScheme类非静态.然后静态ColorScheme类中的静态变量可以指向"true"颜色方案:

public static class ColorScheme
{
    private static CustomColorScheme = new Outlook2007ColorScheme();
    ...
}

private class CustomColorScheme 
{ 
   ...
}

private class Outlook2008ColorScheme : CustomColorScheme 
{
    ...
} …
Run Code Online (Sandbox Code Playgroud)

c# class-design

71
推荐指数
7
解决办法
7万
查看次数

C#中的别名技术?

假设我想使用假设语法在C#中创建一个类型的别名:

 Currency = float;
Run Code Online (Sandbox Code Playgroud)

然后我离开并创建几千个使用Currency类型的文件.

然后我意识到我更喜欢使用FCL类型:

 Currency = System.Single;
Run Code Online (Sandbox Code Playgroud)

很好,所有代码仍然有效.

...几个月后...

等等,我得到一些奇怪的舍入错误.哦,这就是为什么,System.Single只有7位数的精度.让这个数字达到15位:

 Currency = System.Double;
Run Code Online (Sandbox Code Playgroud)

...多年后...

哦,浮点不准确; 乘法$0.0011/unit * 217,384 units暴露了使用浮点的一些限制.会计师反对"会计违规行为".没问题:

Currency = System.Decimal;
Run Code Online (Sandbox Code Playgroud)

...多年后...

国际申请?货币代码.Hmmmm.谢谢CodeProject:

 Currency = Money;
Run Code Online (Sandbox Code Playgroud)

...后来...

噢,模式和做法.让我们混淆一些代码:

 Currency = ICurrency;
Run Code Online (Sandbox Code Playgroud)

在所有这些废话代码中没有破坏.

我知道C#不支持这种级别的封装和使用我编写的语法的重现性.

但是,任何人都可以提出一个语法,可以模拟 什么 已经 尝试 完成(包括 我自己)?

c# alias

12
推荐指数
2
解决办法
249
查看次数

标签 统计

c# ×2

alias ×1

class-design ×1