抱歉,我不是很清楚。有点难以解释我想做什么。我想制作扩展方法,但要将它们隔离开来。例如......
bool b = true;
char c = b.bool_ext.convert_to_YorN();
int i = b.bool_ext.convert_to_1or0();
这样的事情可能吗?谢谢!
答案 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);
但你不能像你展示的那样对它们进行分类。