github / github/codeql

Getting derived class type in C#

Ouverte
#10,342 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
C# question
Langage dominant
CodeQL
Étoiles
10.1k
Forks
2.1k
Merge moyen
2 j 15 h
PR mergées (30 j)
141

Description

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!

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.