首页 新闻 赞助 找找看

C#中如何对一个类扩展属性?

-1
[已解决问题] 解决于 2011-12-22 15:38

比如,string类,我想给它加一个颜色的属性,设置字符串的颜色。。。请问怎么加呢?谢谢 !

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2011-11-29 10:17
< >
分享
最佳答案
5

(1)回答你的标题:不能,只能扩展方法。(2)回答你的内容:这个想法不对,从OO的角度讲,string对象为什么要有一个颜色的属性?如果你说“我打的字在屏幕上,是一个string,它就是有颜色的”,其实你看到的“黑色的string”,只是一个string的展示方式(展示器)而已,string只是包含它要展示的数据,数据是不需要有颜色的。如果你是想在显示某个string的时候(比如输出到Console)有各种颜色,那么你应该自己写一个类,比如:

class ConsoleStringDisplayer
{
public string Text { get; set; }
public ConsoleColor Color { get; set; }
public void Display()
{
var currentColor = Console.ForegroundColor;
Console.ForegroundColor = Color;
Console.WriteLine(Text);
Console.ForegroundColor = currentColor;
}
}

//现在我想在Console里输出一个绿色的hello world
var displayer = new ConsoleStringDisplayer
{
Text = "hello world",
Color = ConsoleColor.Green
};

displayer.Display();
水牛刀刀 | 大侠五级 |园豆:6350 | 2011-11-29 11:44
其他回答(2)
0

这个好像不行,如果类定义成partial型可以扩展,你可以考虑用扩展方法

artwl | 园豆:16736 (专家六级) | 2011-11-29 10:41
0

string是数据,Color是string在显示设备上的表现,也就是这个color不仅仅是string的属性,还跟设备相关,所以,也就是color不应该是string的属性

小彬 | 园豆:947 (小虾三级) | 2011-11-29 12:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册