1
對不起,我不是很清楚。這是很難解釋我想要做什麼。我想做延伸方法,但讓他們分開。所以舉例...擴展擴展方法?或者其他的東西?
bool b = true;
char c = b.bool_ext.convert_to_YorN();
int i = b.bool_ext.convert_to_1or0();
是這樣的可能嗎?謝謝!
對不起,我不是很清楚。這是很難解釋我想要做什麼。我想做延伸方法,但讓他們分開。所以舉例...擴展擴展方法?或者其他的東西?
bool b = true;
char c = b.bool_ext.convert_to_YorN();
int i = b.bool_ext.convert_to_1or0();
是這樣的可能嗎?謝謝!
如果你希望他們「隔離」,那麼你就必須要麼創造自己的類型:
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);
但是你不能像你展示的那樣對它們進行分類。
沒有那是不可能的,該bool_ext
將是一個延伸財產bool
,你不能做當前的擴展特性,只有擴展方法。
隔離如何? – 2012-07-21 00:53:41
@mellamokb我明確表示這是一個例子。這就是說,我當然希望你的代碼沒有充滿無關的評論... – Ber53rker 2012-07-21 00:54:11
你可以這樣做:'b.bool_ext()。convert_to_YorN()' – 2012-07-21 00:56:19