namespace Stary.Evo { public interface IQuery : IBelongToArchitecture,ICanSetArchitecture,ICanGetData,ICanGetSystem,ICanGetUtility { TResult Do(); } public abstract class AbstractQuery : IQuery { public T Do() { return OnDo(); } protected abstract T OnDo(); private IArchitecture mArchitecture; IArchitecture IBelongToArchitecture.GetArchitecture() { return mArchitecture; } void ICanSetArchitecture.SetArchitecture(IArchitecture architecture) { mArchitecture = architecture; } } }