public virtual void Update(AbstractColleague source) { Type t = this.GetType(); var updateMethod = t.GetMethod("UpdateBy" + source.GetType().Name, BindingFlags.Instance | BindingFlags.NonPublic); updateMethod.Invoke(this, new object[] { source }); }
protected override void UpdateByColleagueC(AbstractColleague source) { Data = ((int)source.Data) * 100; }
protected override void UpdateByColleagueA(AbstractColleague source) { }
protected abstract void UpdateByColleagueC(AbstractColleague source);