Ich habe folgende AusnahmeEreignis nicht gefunden Typ
Eine nicht behandelte Ausnahme des Typs ‚System.ArgumentException‘ aufgetreten in WindowsBase.dll
Zusätzliche Informationen: ‚Ereignis‘ Ereignis nicht gefunden Typ ‚Consoleapplication .Ich prüfe'.
in diesem Repro:
using System.Windows; // add reference to WindowsBase
interface IBase
{
event EventHandler Event;
}
interface ITest : IBase { }
class Test : ITest
{
public event EventHandler Event;
}
class Program
{
static void Main(string[] args)
{
var test = new Test();
WeakEventManager<IBase, EventArgs>.AddHandler(test, "Event", (s, e) => { }); // works
WeakEventManager<ITest, EventArgs>.AddHandler(test, "Event", (s, e) => { }); // exception
}
}
Warum über Schnittstellen Ereignis geerbt kann nicht gefunden werden? Ausnahme wird von this method geworfen.
Sieht aus wie die WeakEventManager für Veranstaltungen nur sieht ** speziell ** in den angegebenen Typ - wenn ich ein anderes Ereignis in ITest Schnittstelle deklariert haben und versucht, es zu addieren - es ganz gut gearbeitet. Es scheint, dass Sie den obersten (in Vererbungshierarchie) Typ angeben müssen, um das Ereignis zu finden. Aber ** warum ** ist das so - ich falle hier kurz. –
@ jakub-jankowski, es scheint wie ein Fehler, weil 'typeof (ITest) .GetEvent (" Event ")' funktioniert – Sinatr