1

对不起,我不是很清楚。很难解释我想要做什么。我想制作扩展方法,但将它们分开。所以例如...

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

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

4

2 回答 2

5

不,那是不可能的,这bool_ext将是 的扩展属性bool并且您目前不能做扩展属性,只能做扩展方法。

于 2012-07-21T00:48:01.760 回答
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);

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

于 2012-07-21T00:59:59.817 回答