// for:
// https://stackoverflow.com/questions/50989740/casting-object-to-type-into-variable-of-said-type-known-only-at-runtime
using System;
public class Program
{
public static void Main()
var p = new Program();
p.StaticWay();
p.DynamicWay();
}
void Test(int i)
Console.WriteLine("int");
public void Test(String s)
Console.WriteLine("String");
public void DynamicWay()
dynamic obj1 = "Hi";
dynamic obj2 = 42;
// The right overload is picked at execution time
Test(obj1); // string workds since method is public
Test(obj2); // int fails since method is not public
public void StaticWay()
var s = "Hi";
var i = 42;
var f = 3.14;
Test(s);
Test(i);
Test(f);
void Test(object o)
if (o is string)
Test((string)o);
else if (o is int)
Test((int)o);
else
Console.WriteLine("Unsupported type: " + o.GetType());