0

私はC#でクラスライブラリ(API)を書いています。クラスは非静的であり、いくつかの公開イベントが含まれています。別のクラスの静的メソッドからこれらのイベントをトリガーすることは可能ですか?例えば...

class nonStaticDLLCLASS
{
   public event Event1;

   public CallStaticMethod()
  {
     StaticTestClass.GoStaticMethod();
  }
}

class StaticTestClass
{
   public static GoStaticMethod()
   {
     // Here I want to fire Event1 in the nonStaticDLLCLASS
     // I know the following line is not correct but can I do something like that?

     (nonStaticDLLCLASS)StaticTestClass.ObjectThatCalledMe.Event1();

   }
}

通常、メソッドにアクセスするには非静的クラスのインスタンスを作成する必要があることは知っていますが、この場合、インスタンスは、アクセスしようとしているクラスではなく、すでに作成されています。

4

2 に答える 2

3

インスタンス メソッドは、インスタンスでのみ呼び出すことができます。あなたの例では、インスタンスは静的メソッドを呼び出しています。インスタンスがそれ自体への参照を渡すことを許可するパラメーターを静的メソッドに与えることはできますか? このようなもの:

class nonStaticDLLCLASS
{
   public event Event1;

   public CallStaticMethod()
  {
     StaticTestClass.GoStaticMethod(this);
  }
}

class StaticTestClass
{
   public static GoStaticMethod(nonStaticDLLCLASS instance)
   {
     // Here I want to fire Event1 in the nonStaticDLLCLASS
     // I know the following line is not correct but can I do something like that?

     instance.Event1();

   }
}

このようなことができない理由、またはインスタンスが独自のイベントを発生できない理由を特定するには、質問を明確にする必要があると思います。

于 2009-12-22T16:49:30.150 に答える