una que propiedades programacion método metodos metodo instanciar ejemplos clases clase autoimplementadas c# .net class dynamic duck-typing

c# - propiedades - que es un metodo en programacion



dos clases con métodos y propiedades comunes (3)

Esta pregunta ya tiene una respuesta aquí:

Tengo dos clases.

Clase A:

class A() { public void QQ() {} public void WW() {} }

Y clase B:

class B() { public void QQ() {} public void WW() {} }

No comparten la misma interfaz o clase abstracta. A y B tienen dos jerarquías distintas y no puedo cambiar eso en este momento.

Quiero escribir un solo procedimiento que funcione para A y B y use los métodos QQ y WW.

¿Puedo hacer eso? ¿Puedes sugerir algún documento que pueda estudiar?

Tanques


¿No puedes hacer una clase para padres y poner estos métodos en ella y luego dejar que A y B hereden de esa clase?


Puedes verificar si el objeto es del tipo específico, luego lanzarlo e invocar su método:

void InvokeQQ(object o){ if(o is A) (o as A).QQ(); if(o is B) (o as B).QQ(); }

En C # 6 puedes simplificar esto para

void InvokeQQ(object o){ (o as A)?.QQ(); (o as B)?.QQ(); }


Esto se llama Duck Typing .

Puedes usar dinámicas

void Foo(dynamic dy) { dy.QQ(); }

También puedes usar la reflexión. ( referencia )

public static void CallQQ(object o) { var qq = o.GetType().GetMethod("QQ"); if (qq != null) qq.Invoke(o, new object[] { }); else throw new InvalidOperationException("method not found"); }