扩展扩展方法?或者其他的东西?

时间:2012-07-21 00:43:44

标签: c# methods

抱歉,我不是很清楚。有点难以解释我想做什么。我想制作扩展方法,但要将它们隔离开来。例如......

bool b = true;
char c = b.bool_ext.convert_to_YorN();
int i = b.bool_ext.convert_to_1or0();

这样的事情可能吗?谢谢!

2 个答案:

答案 0 :(得分:5)

不可以,bool_ext将是bool的扩展属性,您目前无法进行扩展属性,只能使用扩展方法。

答案 1 :(得分:3)

如果你想要他们"隔离",那么你必须要发明自己的类型:

public struct MyBool {
    public MyBool(bool value) : this() {
        this.Value = value;
    }

    public bool Value { get; private set; }
}

public static MyBoolExtensions {
    public static char convert_to_YorN(this MyBool value) {
        return value.Value ? 'Y' : 'N';
    }
}

public static BooleanExtensions {
    public static MyBool bool_ext(this bool value) {
        return new MyBool(value);
    }
}

可以使用:

bool b = true;
char c = b.bool_ext().convert_to_YorN();

或者只是将它们用作静态方法:

public class MyBoolConverters {
    public static char convert_to_YorN(bool value) {
        return value.Value ? 'Y' : 'N';
    }
}

可以使用:

bool b = true;
char c = MyBoolConverters.convert_to_YorN(b);

但你不能像你展示的那样对它们进行分类。