2009-01-21 21 views
13

Sorunum var: eklenti tabanlı bir sistemim olduğunu hayal edin.C# ile arabirim aracılığıyla olaylar nasıl uygulanır?

Her eklentiden, örneğin IReporting arabirimini uygulayan olayları yakalayabileceğim bir arabirime ihtiyacım var.

(IReporting) object.OnSomeEvent += <.....> 

Ama bunu yapmanın bir yolunu bulamıyorum. yazman gereken obj.XXX yerine (IReporting) ait

cevap

31

((IReporting) obj) .xxx

public interface IFoo 
{ 
    event EventHandler Boo; 
} 

class Foo : IFoo 
{ 
    public event EventHandler Boo; 
    public void RaiseBoo() 
    { 
     if (Boo != null) 
      Boo(this, EventArgs.Empty); 
    } 
} 

... 

private void TestClass_Boo(object sender, EventArgs e) 
{ 
    throw new NotImplementedException(); 
} 

    ... 

    object o = new Foo(); 
    ((IFoo)o).Boo += TestClass_Boo; 
    ((Foo)o).RaiseBoo(); 

MEF

+0

olan eklenti çerçeve, örneğin iyi mimarisi ile mevcut çözümlere bir göz atın İlişkin Bu uygulamada bunu yapmanın bir yolu yok (Foo) o) somut sınıf Foo'ya dökülmeden .RaiseBoo(); ? – Shiv

İlgili konular