0

WCFサービスの静的コンストラクターからインスタンスメソッドを呼び出すことは可能ですか?MyServiceの現在のインスタンスを取得できる現在のコンテキストのようなものはありますか?

public class MyService : IMyService
{
    static MyService()
    {
        //how to call Func?
    }

    private void Func()
    {
    }
}

編集:

この質問はWCFの質問であり、静的メソッドからインスタンスメソッドを呼び出すことに関する単純な言語の質問ではありません。Webアプリケーションでの同様のケースの例を次に示します。

public class MyPage : Page
{
    static MyPage()
    {
        var page = (MyPage)HttpContext.Current.Handler;
        page.Func();
    }

    private void Func()
    {
    }

}

したがって、WCFでは、サービスの呼び出し中に、現在実行中のMyServiceのインスタンスを持つグローバルコンテキストが存在することを期待しています。

4

3 に答える 3

0

ここでWCFサービスを利用してください。これはWCFの質問ではなく、純粋に基本的なC#言語の質問です。クラスがサービスであることとはまったく関係ありません。

答えはいいえだ。

静的コンストラクターには、インスタンス関数を呼び出すビジネスはありません。インスタンスの参照はありません。不要になるようにクラス設定を変更してください。デザインエラー。ほとんどの場合、コードはSTATICコンストラクターではなく、インスタンスコンストラクターである必要があります。

于 2010-03-11T09:19:50.773 に答える
0

静的コンストラクターからインスタンスメソッドを呼び出すことはできません。CLRがこの静的コンストラクターをいつ呼び出すかはわかりません。ご存知のとおり、このオブジェクトのインスタンスが作成される前に呼び出されます。また、オブジェクトのインスタンスがないと、インスタンスメソッドを呼び出すことはできません。

于 2010-03-11T09:20:16.513 に答える
0

まあ、それは可能です。なぜこれが必要なのか説明できますか?

public class MyService : IMyService
    {
        static MyService()
        {
            new MyService().Func();
        }

        private void Func()
        {
        }
    }
于 2010-03-11T09:23:12.047 に答える