digamos que tengo¿Existe alguna forma de imponer un método para seguir ciertas firmas de métodos?
public delegate DataSet AutoCompleteDelegate(
string filter, long rowOffset);
puedo hacer que la siguiente clase para hacer cumplir ese método de firma? (Sólo un evocado idea):
public class MiddleTier
{
[Follow(AutoCompleteDelegate)]
public DataSet Customer_AutoComplete(string filter, long rowOffset)
{
var c = Connect();
// some code here
}
[Follow(AutoCompleteDelegate)]
public DataSet Item_AutoComplete(string filter, long rowOffset)
{
var c = Connect();
// some code here
}
// this should give compilation error, doesn't follow method signature
[Follow(AutoCompleteDelegate)]
public DataSet BranchOffice_AutoComplete(string filter, string rowOffset)
{
var c = Connect();
// some code here
}
}
[EDIT]
Propósito: Yo ya puse atributos en los métodos de mi middletier. Tengo métodos como éste:
public abstract class MiddleTier : MarshalByRefObject
{
// Operation.Save is just an enum
[Task("Invoice", Operation.Save)]
public Invoice_Save(object pk, DataSet delta);
[Task("Receipt", Operation.Save)]
public Receipt_Save(object pk, DataSet delta);
// compiler cannot flag if someone deviates from team's standard
[Task("Receipt", Operation.Save)]
public Receipt_Save(object pk, object[] delta);
}
después en tiempo de ejecución, voy a iterar todos los métodos de la middletier y ponerlos a la recogida (atributos ayuda mucho aquí), luego asignarlos en las funciones de delegado de winform (facilitado por la interfaz, sistema basado en complementos) como cargado
Estoy pensando si puedo hacer que los atributos sean más autodescriptivos, por lo que el compilador puede detectar inconsistencias.
namespace Craft
{
// public delegate DataSet SaveDelegate(object pk, DataSet delta); // defined in TaskAttribute
public abstract class MiddleTier : MarshalByRefObject
{
[Task("Invoice", SaveDelegate)]
public abstract Invoice_Save(object pk, DataSet delta);
[Task("Receipt", SaveDelegate)]
// it's nice if the compiler can flag an error
public abstract Receipt_Save(object pk, object[] delta);
}
}
Estoy pensando si poner los métodos de cada clase, sería una exageración para crear instancias de un objeto siempre Remoting. Y al ponerlos en una clase separada, podría ser más difícil facilitar la reutilización del código, digamos que Invoice_Save necesita alguna información en Receipt_Open. De hecho, incluso tengo un informe aquí (cristal), que obtuvo datos de Remoting middletier DataSet, dentro del método invocado, obtiene algo de información sobre otros métodos y se fusiona en su propio DataSet, todos están sucediendo en middletier, no en varios recorridos de ida y vuelta, todos se hacen en el lado del servidor (nivel medio)
¿Qué idioma es este? – hlovdal
El lenguaje es C# – Hao
No puse esto como respuesta porque no lo he practicado en absoluto, pero tal vez a través de la reflexión usted podría (1) obtener todos los métodos en la clase (2) para cada método comprobar que tiene la firma y atributo dados –