public void Do(IDo o, Doer doer) { if (o is A a) { doer.Do(a); } else if (o is B b) { doer.Do(b); } else if (o is C c) { doer.Do(c); } else if (o is D d) { doer.Do(d); } else if (o is E e) { doer.Do(e); } else if (o is F f) { doer.Do(f); } }
public void Do(IDo o, Doer doer) { var a = o as A; var b = o as B; var c = o as C; var d = o as D; var e = o as E; var f = o as F; if (a != null) { doer.Do(a); } else if (b != null) { doer.Do(b); } else if (c != null) { doer.Do(c); } else if (d != null) { doer.Do(d); } else if (e != null) { doer.Do(e); } else if (f != null) { doer.Do(f); } }
public void Do(IDo o, Doer doer) { var type = o.GetType(); if (type == typeof(A)) { doer.Do((A)o); } else if (type == typeof(B)) { doer.Do((B)o); } else if (type == typeof(C)) { doer.Do((C)o); } else if (type == typeof(D)) { doer.Do((D)o); } else if (type == typeof(E)) { doer.Do((E)o); } else if (type == typeof(F)) { doer.Do((F)o); } }
public void Do(IDo o, Doer doer) { if (o is A) { ((A)o).Do(doer); } else if (o is B) { ((B)o).Do(doer); } else if (o is C) { ((C)o).Do(doer); } else if (o is D) { ((D)o).Do(doer); } else if (o is E) { ((E)o).Do(doer); } else if (o is F) { ((F)o).Do(doer); } }
public void Do(IDo o, Doer doer) { var handle = Type.GetTypeHandle(o); if (handle.Equals(s_a)) { doer.Do((A)o); } else if (handle.Equals(s_b)) { doer.Do((B)o); } else if (handle.Equals(s_c)) { doer.Do((C)o); } else if (handle.Equals(s_d)) { doer.Do((D)o); } else if (handle.Equals(s_e)) { doer.Do((E)o); } else if (handle.Equals(s_f)) { doer.Do((F)o); } }
public void Do(IDo o, Doer doer) { Action <Doer, object> actor; s_dict.TryGetValue(o.GetType(), out actor); actor(doer, o); }
public void Do(IDo o, Doer doer) { switch (o) { case A a: doer.Do(a); break; case B b: doer.Do(b); break; case C c: doer.Do(c); break; case D d: doer.Do(d); break; case E e: doer.Do(e); break; case F f: doer.Do(f); break; } }
static long BenchmarkType(ICaster caster) { var doer = new Doer(); GC.Collect(); var watch = Stopwatch.StartNew(); for (long i = 0; i < Iterations; ++i) { caster.Do(new A(), doer); caster.Do(new B(), doer); caster.Do(new C(), doer); caster.Do(new D(), doer); caster.Do(new E(), doer); caster.Do(new F(), doer); } return(watch.ElapsedMilliseconds); }
public void Do(IDo o, Doer doer) { }
public class F : IDo { public void Do(Doer doer) { ++doer.Count; }
public void Do(IDo o, Doer doer) { o.Do(doer); }
public void Do(IDo o, Doer doer) { s_dict[Type.GetTypeHandle(o)](doer, o); }