private void EditTemplateAction_Execute(object sender, SimpleActionExecuteEventArgs e)
        {
            Doctor doctor = ObjectSpace.GetObject(SecuritySystem.CurrentUser as Doctor);

            if (doctor != null)
            {
                var listView = View as ListView;
                if (listView != null)
                {
                    // получаем тип объектов списка
                    var type = listView.ObjectTypeInfo.Type;

                    // динамическая выборка по типу объекта
                    MethodInfo method    = typeof(Enumerable).GetMethod("OfType");
                    MethodInfo generic   = method.MakeGenericMethod(new Type[] { type });
                    var        templates = (IEnumerable <TextTemplate>)generic.Invoke(null, new object[] { doctor.TextTemplates });

                    // создаем объект для отображения в окне редактирования
                    var templateField = new TextTemplateEditParameters()
                    {
                        EditTemplates = templates.ToList(), TemplateType = type
                    };

                    // отображаем окно
                    ShowView((ActionBase)sender, templateField);
                }
            }
        }
        private void ShowView(ActionBase action, TextTemplateEditParameters templateField)
        {
            ShowViewParameters svp = new ShowViewParameters();

            var        os = Application.CreateObjectSpace();
            DetailView dv = Application.CreateDetailView(os, templateField);

            svp.CreatedView  = dv;
            svp.TargetWindow = TargetWindow.NewModalWindow;
            DialogController dc = new DialogController();

            dc.Accepting           += DcOnAccepting;
            dc.CancelAction.Caption = "Отмена";
            svp.Controllers.Add(dc);
            Application.ShowViewStrategy.ShowView(svp, new ShowViewSource(null, action));
        }