mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
60 lines
1.0 KiB
C#
60 lines
1.0 KiB
C#
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
|
|
class Dynamic
|
|
{
|
|
class C1
|
|
{
|
|
public C3 Field;
|
|
public void Method() { }
|
|
}
|
|
|
|
class C2
|
|
{
|
|
public C4 Field;
|
|
public void Method() { }
|
|
}
|
|
|
|
class C3
|
|
{
|
|
public void Method() { }
|
|
}
|
|
|
|
class C4
|
|
{
|
|
public void Method() { }
|
|
}
|
|
|
|
class C5
|
|
{
|
|
public C1 Field;
|
|
public void Method() { }
|
|
}
|
|
|
|
class C6
|
|
{
|
|
public C2 Field;
|
|
public void Method() { }
|
|
}
|
|
|
|
public static void Run(dynamic d)
|
|
{
|
|
// Targets: C1.Method(), C2.Method(), C3.Method(), C4.Method(), C5.Method(), C6.Method()
|
|
d.Method();
|
|
|
|
// Targets: C1.Method(), C2.Method(), C3.Method(), C4.Method()
|
|
d.Field.Method();
|
|
|
|
dynamic dyn = new C1();
|
|
// Targets: C3.Method()
|
|
dyn.Field.Method();
|
|
|
|
// Targets: C3.Method(), C4.Method()
|
|
d.Field.Field.Method();
|
|
|
|
dyn = new C5();
|
|
// Targets: C3.Method()
|
|
dyn.Field.Field.Method();
|
|
}
|
|
}
|