将新属性添加到字符串类C#

时间:2011-07-21 21:47:32

标签: c# extension-methods

我想知道是否可以将新属性添加为字符串类的扩展属性。我正在寻找的是这样的

string.Empty

我想进行扩展,例如:

string.DisplayNone;

我是否可以将扩展属性添加到字符串C#类中,我可以像处理string.Empty时那样调用它?

3 个答案:

答案 0 :(得分:4)

是的,你可以这样做..但是它将是一种扩展方法,而不是属性。

public static class Extensions
{
    public static string DisplayNone(this string instance)
    {
        return "blah";
    }
}

需要使用({hacky)作为"".DisplayNone();,因为它需要创建一个字符串实例。

如果您愿意,另一种稍微不那么粗暴的方法就是创建一个帮助类..

public static StringHelper
{
    public static string DisplayNone()
    {
        return "blah";
    }
}

答案 1 :(得分:4)

您只能为对象构建扩展程序......

类似的东西:

class Program
{
    static void Main(string[] args)
    {
        string x = "Hello World";
        x.DisplayNow();
    }
}

public static class StringExtension
{
    public static void DisplayNow(this string source)
    {
        Console.WriteLine(source);
    }
}

但是我从未见过如何扩展一个从未初始化过的结构或类。

答案 2 :(得分:0)

您可以创建自己的值类型。用“DisplayName”方法模仿String类型。

但是,我不明白为什么你需要“DisplayName”这个类型?它对sting实例更有意义。即“你好” .DisplayName。请参阅Smokefoot对此问题的回答。