Ho un'interfaccia IFoo che viene implementata solo da oggetti con una classe base di livello abbastanza alto (framework). Sarebbe molto utile per me non solo ottenere i membri dell'interfaccia, ma anche l'oggetto di implementazione stesso. Sarebbe una cattiva pratica che l'interfaccia includa il suo implementatore come una proprietà?
Ad esempio:
public interface IFoo
{
UIElement Implementer {get;}
int Bar {get;}
}
public class FooTextBox : TextBox, IFoo
{
public UIElement Implementer
{
get{ return this;}
}
public int Bar
{
get{ return 5;}
}
}
e quindi recuperandolo da qualche altra parte:
IFoo foo = GetIFoo();
var opac = foo.Implementer.Opacity;