Question

Je crée une classe abstraite qui peut être héritée dans une classe partielle d'une classe LINQ à SQL. La LINQ à la classe SQL contient un tas de méthodes intégrées partielles. Est-il possible que je puisse mettre en œuvre une ou plusieurs des méthodes partielles dans la classe abstraite? Je sais que les méthodes partielles ne peuvent être contenues dans des classes partielles ou struct. Je suis sûr qu'il doit y avoir une autre façon de le faire.

Voici plus en détail:

  • Je peux avoir une table de base de données appelée Nouvelles. Si je crée un LINQ to SQL dbml fichier contenant ce tableau, le code généré automatiquement génère une classe partielle pour Nouvelles.
  • Cette classe partielle contient plusieurs méthodes partielles.
  • J'ai une classe que je suis bâtiment qui contient plusieurs méthodes que je voudrais utiliser dans toutes mes classes LINQ to SQL.
  • L'une de ces méthodes est une méthode partielle ajoutée à chaque LINQ à la classe SQL. J'ai un corps commun à utiliser pour cette méthode. Plutôt que d'ajouter cette méthode pour chaque classe partielle, je suis à la recherche d'un moyen de créer une fois et d'hériter avec mon héritage de classe de base.

L'espoir qui aide à expliquer plus.

Était-ce utile?

La solution

Méthodes partielles ne sont pas utilisables sur l'héritage. Vous pouvez ajouter des méthodes régulières à la classe de base abstraite, mais ils ne seront pas automatiquement « paire » avec les déclarations de méthode partielle. Donc non. Vous pouvez, bien sûr, tout simplement l'appel de mise en œuvre de la méthode partielle dans la classe de base.

Notez également que si le code commun se rapporte à des choses comme la vérification (qui / quand), vous pouvez aussi le faire en remplaçant la méthode DataContext du SubmitChanges, et appelant GetChangeSet:

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

Enfin, notez que vous pouvez également spécifier une classe de base commune pour toutes les entités du dbml ( comme si ); vous ne devez pas le faire à la main dans chaque classe partielle.

Autres conseils

Je pense que je comprends ce que vous voulez faire, mais sinon, laissez-moi savoir. Vous pouvez faire votre classe de base abstraite partielle et tirez la mise en œuvre que vous voulez vers le haut dans cette classe. Sinon, vous pouvez prendre votre classe abstraite et la fonctionnalité que vous résumer que vos classes d'enfants d'avoir accès à.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top