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 に答える