github / github/codeql

Getting derived class type in C#

Aberta
#10,342 1 comentário 0 reações 0 responsáveis Ver no GitHub
C# question
Linguagem predominante
CodeQL
Estrelas
10.1k
Forks
2.1k
Merge médio
2d 15h
PRs com merge (30d)
141

Descrição

For the following code snippet:

```
class A{
public virtual void someFunc(){}
}
class B : A{
public override void someFunc(){}
}
public A createB(){
return new B();
}
main(){
var b = createB();
b.someFunc();
}
```

Is there a good way to check that b is actually type B and not A? And that b.someFunc() is calling the B implementation?

I've tried getType() on b and it's giving me A, which makes sense since createB() does explicitly return an A type. Current approach is going into the createB() method and having my logic iterate through there but it's becoming a lot more complex than I think it needs to be.

Searched through past issues and seems like my question is similar to #9784 . The suggestion was to use dataflow but wanted to check if there might be an easier way in C#.

Any thoughts/ideas?

Thanks!

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.