Pregunta

Estoy creando una clase abstracta que puede ser heredada en una clase parcial de una clase LINQ a SQL. El LINQ a clase SQL contiene un montón de métodos incorporados parciales. ¿Hay una manera que puedo poner en práctica uno o más de los métodos parciales en la clase abstracta? Yo sé que los métodos parciales sólo pueden estar contenidas dentro de las clases parciales o estructuras. Estoy seguro de que tiene que haber otra manera de hacerlo.

Aquí hay más detalles:

  • Puede que tenga una tabla de base de datos llamada News. Si creo un LINQ to SQL dbml archivo que contiene esta tabla, el código generado automáticamente genera una clase parcial de Noticias.
  • Esta clase parcial contiene varios métodos parciales.
  • Tengo una clase que estoy edificio que contiene varios métodos que me gustaría utilizar en cualquiera de mis clases de LINQ to SQL.
  • Uno de estos métodos es un método parcial añadió a cada LINQ a clase SQL. Tengo un cuerpo común el uso de este método. En lugar de añadir este método para cada clase parcial, estoy buscando una manera de crear una vez y heredar con mi herencia de clases base.

La esperanza que ayuda a explicar más.

¿Fue útil?

Solución

métodos parciales no son utilizables por la herencia. Se podría añadir métodos regulares de la clase base abstracta, pero no lo harán automáticamente "par" con las declaraciones de métodos parciales. Por lo tanto: no. Puede, por supuesto, sólo tiene que tener el llamado método de aplicación parcial en la clase base.

Tenga en cuenta también que si el código común se refiere a cosas como los de auditoría (quién / cuándo), también se puede hacer esto por razones imperiosas método DataContext del SubmitChanges, y llamando GetChangeSet:

    public override void SubmitChanges(ConflictMode failureMode)
    {
        ChangeSet delta = GetChangeSet();
        //... use delta.Updates, delta.Inserts and delta.Deletes
        base.SubmitChanges(failureMode);
    }

Por último, tenga en cuenta que también se puede especificar una clase base común para todas las entidades de la dbml ( como así ); usted no tiene que hacerlo a mano en cada clase parcial.

Otros consejos

Creo que entiendo lo que quieres hacer, pero si no, que me haga saber. Puede hacer que su clase base abstracta parcial y tire de la aplicación que desee para arriba en esa clase. Como alternativa, puede tomar su clase abstracta y encapsular la funcionalidad que desea que sus clases hijas que tienen acceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top