Pergunta

Estou criando uma classe abstrata que pode ser herdada em uma classe parcial de um LINQ to SQL classe. O LINQ para SQL classe contém um grupo de métodos internos parciais. Existe uma maneira que eu possa implementar um ou mais dos métodos parciais na classe abstrata? Eu sei que os métodos parciais só pode ser contido dentro de classes parciais ou estruturas. Tenho certeza de que tem que haver uma outra maneira de fazê-lo.

Veja mais detalhes:

  • Talvez eu tenha uma tabela de banco de dados chamado News. Se eu criar um arquivo LINQ to SQL dbml contendo esta tabela, o código gerado automaticamente gera uma classe parcial para o News.
  • Esta classe parcial contém vários métodos parciais.
  • Eu tenho uma classe que eu estou construindo que contém vários métodos que eu gostaria de usar em todos os meu LINQ para classes de SQL.
  • Um destes métodos é um método parcial adicionados a cada LINQ para SQL classe. Eu tenho um corpo comum a ser usado para este método. Em vez de adicionar esse método para cada classe parcial, eu estou procurando uma maneira de criar uma vez e herdá-la com a minha herança de classe base.

Hope que ajuda a explicar mais.

Foi útil?

Solução

métodos parciais não são utilizáveis ??sobre a herança. Você pode adicionar métodos regulares para a classe base abstrata, mas eles não vão automaticamente "par" com as declarações de métodos parciais. Então não. Você pode, é claro, simplesmente têm a chamada implementação do método parcial na base de classe.

Note-se também que, se o código comum relaciona-se com coisas como auditoria (quem / quando), você também pode fazer isso, substituindo método DataContext do SubmitChanges, e chamando GetChangeSet:

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

Finalmente, note que você também pode especificar uma classe base comum para todas as suas entidades no dbml ( como modo ); você não tem que fazê-lo manualmente em cada classe parcial.

Outras dicas

Eu acho que entendo o que você quer fazer, mas se não, deixe-me saber. Você pode fazer sua classe base abstrata parcial e puxe a aplicação que você quer para dentro dessa classe. Alternativamente, você pode tomar o seu classe abstrata e encapsular a funcionalidade que você quer que seus classes filhas para ter acesso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top