multiples - polimorfismo c#
¿Es posible dividir una interfaz en 2 interfaces parciales e implementarla en 2 clases parciales? (2)
Estoy realizando modificaciones bastante extensas y continuas a un producto de terceros para mi empleador. Una de las principales consideraciones al implementar mi código ha sido segregarlo tanto como sea posible para que la integración de los cambios del proveedor sea lo menos dolorosa posible. Hasta ahora, una de las herramientas más útiles para lograr esto ha sido la clase parcial. Al usar clases parciales puedo mantener cualquier método nuevo que tenga que implementar en su propio archivo.
Pero hoy tengo un hipo que necesito abordar de alguna manera. Digamos que necesito extender la siguiente interfaz.
public partial interface ICondition
{
void MethodA();
void MethodB();
}
al hacer que la interfaz sea parcial y agregar un archivo llamado ICondition.CompanyName.cs
public partial interface ICondition
{
void MethodC();
}
ahora lo que quiero hacer es implementar la interfaz de la misma manera que la declaré, con MethodA()
y MethodB()
implementados en un archivo de una clase parcial, y MethodC()
en otro.
public partial class Condition : ICondition
{
public void MethodA(){ }
public void MethodB(){ }
}
y mi clase Condition.CompanyName.cs
public partial class Condition : ICondition
{
public void MethodC() { }
}
Por supuesto, esto no funciona, ya que la interfaz debe implementarse en el mismo archivo. Lo que espero es que haya alguna declaración, o un poco de magia de sintaxis que no conozco, que me permita hacer lo que quiero hacer y mantener estos métodos en archivos separados, pero con la misma interfaz.
Editar
Esto sí funciona, mi problema fue que tuve mis 2 clases parciales en diferentes espacios de nombres debido a un error tipográfico tonto. Comencé un poco demasiado temprano esta mañana, supongo, gracias a todos por su tiempo y atención.
No es necesario tener una interfaz parcial en este caso, aún así debería poder colocar los métodos donde desee.
Por supuesto, esto no funciona, ya que la interfaz debe implementarse en el mismo archivo.
No veo cómo tu ejemplo no funciona, solo hice lo siguiente:
partial interface IFoo
{
void One();
void Two();
}
partial class Class1 : IFoo
{
public void Two()
{ }
public void Three()
{ }
}
En un archivo.
partial interface IFoo
{
void Three();
}
partial class Class1 : IFoo
{
public void One()
{ }
}
En otro...
Tal vez sus clases parciales no están en el mismo montaje?
De lo contrario, su ejemplo debería funcionar bien ...