vb.net - Objeto agregação de classes herdadas
-
11-12-2019 - |
Pergunta
Eu estou a brincar com a composição de um par de objetos.
Eu tenho duas classes (Nota de tarefa).A Tarefa da classe é derivada da Observação de classe como uma tarefa é um extented nota.
Cada nota tem uma propriedade Property Child as list (of note)
como uma nota ou uma tarefa pode ser adicionado a um grupo já existente ou a nota de tarefa (Portanto, esta "criança" nota poderia ser uma tarefa ou uma nota)
ou seja.
dim x as new note()
x.Child.item(0).Child.item(0).Child.item(0).description.ToString()
o final criança nota objeto é, na verdade, uma tarefa, como posso fazer esta agregação trabalho?eu não me importo se a uma nota ou uma tarefa, mas eu gostaria de liberar a funcionalidade da base ou estendido classe.
Meu imediato pensamentos eram de que cada objeto deve ter uma lista de tarefas e lista de notas, mas ele se sente como não poderia ser uma solução mais elegante.
Alguém tem alguma opinião sobre isso?
Solução
Você está a coleção de Observação de objetos já deve dar o que você deseja.
Se você precisa diferenciar entre a Observação e a Tarefa que você pode perguntar se a instância é um "typeof" Tarefa e, em seguida, lançar de forma adequada para obter a derivada de propriedades e métodos.
Se os métodos e propriedades que você precisa são parte da classe base, você não precisa de elenco, você pode confiar na polimorfismo para chamar o tipo apropriado de método/propriedade.
Outras dicas
Se eu entendi corretamente, você deve implementar o comportamento de sua classe com o que nós C# chamam de virtual métodos / propriedades...Essencialmente, eles usam tardia chamadas de modo que a funcionalidade apropriada é chamado de classe correta de - ser que o pai ou a classe derivada.
Eu acho que o VB.Net equivilent é "Overrideable" e "Substituições".