Instanciar classe abstrata em método no C# igual no Java

1 resposta
.netprogramaçãojavacsharp
Mint

O problema que estou tendo é um tanto quanto esquisito, preciso disso em C#:

Classe MethodStrategy

public abstract class MethodStrategy {
    public abstract void strategy();
}

Classe Teste
public class Test {
   public void test(MethodStrategy methodStrategy) {
       Thread thr = new Thread(() -> {
           methodStrategy.strategy();
       });
       thr.start();
   }
}

Classe Test2
public class Test2 {
    public Test2() {
        Test t = new Test();
        t.test(new MethodStrategy() {
            @Override
            public void strategy() {
                //TODO
            } 
        });
    }
}

Este sistema funciona perfeitamente em Java queria saber se tem uma forma de fazer isso em C#.

1 Resposta

A

Se você quer passar uma classe abstrata com apenas um método, como no exemplo que deu, aconselho a usar um delegate. Tem alguns exemplos aqui: https://pt.stackoverflow.com/questions/2822/o-que-são-lambda-expressions-e-qual-a-sacada-em-usá-las

Com isso, você nao precisa criar uma classe, pode passar a um MethodStrategy como uma lambda.

Agora, se sua classe tiver mais de um método, daí recomendaria criar uma classe mesmo herdando dela, ficaria mais claro, imagino.

Criado 23 de maio de 2017
Ultima resposta 24 de mai. de 2017
Respostas 1
Participantes 2