Using Dispose Syntax to define custom scope C# with Example



Using Dispose Syntax to define custom scope C# with Example

For some use cases, you can use the using syntax to help define a custom scope. For example, you can define the 
following class to execute code in a specific culture. 
 

public class CultureContext : IDisposable 
{ 
private readonly CultureInfo originalCulture; 
public CultureContext(string culture) 
{ 
originalCulture = CultureInfo.CurrentCulture; 
Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); 
} 
public void Dispose() 
{ 
Thread.CurrentThread.CurrentCulture = originalCulture; 
} 
} 
You can then use use this class to define blocks of code that execute in a specific culture. 
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
using (new CultureContext("nl-NL")) 
{ 
// Code in this block uses the "nl-NL" culture 
Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 25-12-2016 00:00:00 
} 
using (new CultureContext("es-ES")) 
{ 
// Code in this block uses the "es-ES" culture 
Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 25/12/2016 0:00:00 
} 
// Reverted back to the original culture 
Console.WriteLine(new DateTime(2016, 12, 25)); // Output: 12/25/2016 12:00:00 AM 
Note: as we don't use the CultureContext instance we create, we don't assign a variable for it. 
This technique is used by the BeginForm helper in ASP.NET MVC. 

0 Comment's

Comment Form

Submit Comment