1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| // Interface
public interface IContext { void DoSomething(); }
// Implémentation
public class Context:IContext{ public void DoSomething() { Console.WriteLine("Hello World!"); }
// Classe fournisseur global
public class Provider
{
public static IContext Context { get; set; }
}
// Un utilisateur
public class Class1
{
private IContext _context();
public Class1(IContext context) { _context = context; }
public Class1():this(Provider.Context);
public void CallSomething() { _context.DoSomething(); }
}
// Le programme
class Program
{
static void Main(string[] args)
{
Provider.Context = new Context();
Class1 obj1 = new Class1();
obj1.CallSomething();
}
}
// Implémentation de IContext pour les tests
public class TestContext:IContext
{
int CallCount { get; private set; }
public void DoSomething() { CallCount++; }
}
// Classe de test
[TestFixture]
public class TestClass1
{
[Test]
public void TestCallSomething()
{
IContext context = new TestContext();
Class1 obj1 = new Class1(context);
obj1.CallSomething();
Assert.IsTrue(context.CallCount > 0);
}
} |
Partager