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?

Foi útil?

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".

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