public virtual object New(Window window, ScreenRepository screenRepository) { var o = Activator.CreateInstance(type, window, screenRepository); //Get all fields, even from base types var fieldInfos = AllTypes(type).SelectMany(t => t.GetFields(Entity.BindingFlag)); foreach (var fieldInfo in fieldInfos) { if (nonInjectedTypes.Any(t => t.IsAssignableFrom(fieldInfo.FieldType))) { continue; } object injectedObject = null; if (typeof(IUIItem).IsAssignableFrom(fieldInfo.FieldType)) { var interceptor = new UIItemInterceptor(SearchCondition(fieldInfo, window.Framework), window, screenRepository.SessionReport); injectedObject = DynamicProxyGenerator.Instance.CreateProxy(fieldInfo.FieldType, interceptor); } else if (typeof(AppScreenComponent).IsAssignableFrom(fieldInfo.FieldType)) { var componentScreenClass = new ScreenClass(fieldInfo.FieldType); injectedObject = componentScreenClass.New(window, screenRepository); } if (injectedObject != null) { fieldInfo.SetValue(o, injectedObject); } } return(o); }
public RepositoryComponent(Window window, ScreenRepository screenRepository) { Window = window; ScreenRepository = screenRepository; }
public AppScreenComponent(Window window, ScreenRepository screenRepository) : base(window, screenRepository) { }
public virtual void Close() { ScreenRepository.Closing(this); Window.Close(); }
public AppScreen(Window window, ScreenRepository screenRepository) : base(window, screenRepository) { }