using System;
using System.Collections.Generic;
namespace DependencyInjection
{
class Program
{
static void Main(string[] args)
{
PrintContextTitle();
using (new MyNestedContext("outer scope"))
{
PrintContextTitle();
using (new MyNestedContext("inner scope"))
{
PrintContextTitle();
}
PrintContextTitle();
}
PrintContextTitle();
Console.ReadKey();
}
static void PrintContextTitle()
{
Console.WriteLine("Current Context is {0}", MyNestedContext.Current != null ? MyNestedContext.Current.Title : "null");
}
}
public class MyNestedContext : IDisposable
{
private static Stack<MyNestedContext> scopeStack = new Stack<MyNestedContext>();
public string Title { get; set; }
public MyNestedContext(string title)
{
Title = title;
scopeStack.Push(this);
}
public static MyNestedContext Current {
get {
if (scopeStack.Count == 0)
return null;
return scopeStack.Peek();
}
}
public void Dispose()
{
scopeStack.Pop();
}
}
}
Design etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Design etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
30 Kasım 2018
The Ambient Context Design Pattern in .NET
The Ambient Context Design Pattern in .NET
Kaydol:
Kayıtlar (Atom)