C# 4.0 supporta la programmazione dinamica per mezzo di un nuovo tipo di oggetti, il tipo dynamic.
Per fare ciò è stata introdotta una nuova keyword (dynamic) per indicare al compilatore che tutto ciò che ha che fare con l’oggetto, dichiarato dynamic, dovrebbe essere fatto in modo dinamico a run-time (Dynamic Language Runtime) piuttosto che a compile-time. L’uso di dynamic si fa particolarmente interessante quando usiamo frequentemente reflection, ad esempio:
Assembly myLib =
Assembly.LoadFile( @"C:\temp\mylib.dll" );
Type customerType = myLib.GetType( "Mylib.Customer" );
object customer =
Activator.CreateInstance( customerType );
PropertyInfo pInfo = customerType.GetProperty( "Name" );
pInfo.SetValue( customer, "Antonio", null);
Con l’introduzione di C# 4.0 possiamo sostituire le rughe di codice 3,4 e 5 in questo modo:
dynamic customer =
Activator.CreateInstance( customerType ) ;
customer.Name = "Antonio";



