2

intC# で (ラッパー クラスを作成せずに) インターフェイスを実装するように拡張することは可能ですか (そうではないと思います)。

私はそのようなインターフェースを持っています

public interface IActionLoggerObject
{
    string GetForLogging();
}

私は(概念的に)これができるようにしたいと思います:

public class int:IActionLoggerObject
{
    string IActionLoggerObject.GetForLogging() { return "s"; }
}
4

3 に答える 3

8

(C#で)「int」を拡張して(ラッパークラスを作成せずに)インターフェイスを実装することは可能ですか(そうではないと思います)?

いいえ。既存の型が実装するインターフェイスを変更することはできません。

なぜそうしようとしているのかは明らかではありませんが、ラッパー クラスを作成することは、ほぼ間違いなくここでの方法です。

于 2012-06-19T20:27:17.737 に答える
3

MNGwinn が Jon Skeet の回答に対するコメントで述べたように、要件をすべて満たしていれば、拡張メソッドを使用できます。

したがって、次のようなものです。

public static class ExtensionMethods
{
    public static string GetForLogging(this int @this)
    {
        return "s"; // or maybe return @this.ToString();
    }
}

これをやらせてくれますか。

string val = 3.GetForLogging();
于 2012-06-19T20:51:41.743 に答える