ATMLCommonLibrary.controls.signal.SignalFunctionTypeControl.ControlsToData C# (CSharp) Метод

ControlsToData() приватный Метод

private ControlsToData ( ) : void
Результат void
        private void ControlsToData()
        {
            if (_signalFunctionType == null)
            {
                SignalModel model = awbDropListTree.SelectedSignalModel;
                if (model != null)
                {
                    var name = edtName.Text;
                    var ins = edtIn.Text;
                    var signal = model.Signal;
                    if (signal != null)
                    {
                        bool hasClass = false;
                        string signalName = signal.name;
                        string xmlns = model.SignalNameSpace;
                        var bean = CacheManager.GetNamespaceCache().getItem( xmlns ) as LuNamespaceBean;
                        if (bean != null)
                        {
                            string className = bean.appNamespace + "." + signalName;
                            object obj = Assembly.GetExecutingAssembly().CreateInstance( className );
                            if (obj is SignalFunctionType)
                            {
                                _signalFunctionType = obj as SignalFunctionType;
                                hasClass = true;
                            }
                        }
                        if( !hasClass )
                        {
                            CreateXmlElementItem(model);
                        }
                    }
                }
                else if (!string.IsNullOrEmpty( edtName.Text ))
                {
                    //CreateXmlElementItem( edtName.Text );
                }
            }

            XmlElement element = _signalFunctionType as XmlElement;
            if (element != null)
            {
                element.SetAttribute( "name", edtName.Text );
                if( string.IsNullOrWhiteSpace(edtIn.Text) )
                    element.RemoveAttribute( "in" );
                else
                    element.SetAttribute("in", edtIn.Text );
            }

            foreach (DataGridViewRow row in signalAttributes.Rows)
            {
                if (row.IsNewRow)
                    continue;

                var name = row.Cells[0].Value as string;
                var type = row.Cells[1].Value as string;
                var value = row.Cells[2].Value as string;
                var attr = row.Tag as dbSignalAttribute;

                //---------------------------------------------------//
                //--- Set the default value if the value is empty ---//
                //---------------------------------------------------//
                if (string.IsNullOrWhiteSpace( value ) && attr != null &&
                    !string.IsNullOrWhiteSpace( attr.defaultValue ))
                    value = attr.defaultValue;

                if (_signalFunctionType is SignalFunctionType)
                {
                    if (attr == null)
                        attr = new dbSignalAttribute();
                    attr.Value = value;
                    attr.attributeName = name;
                    ( (SignalFunctionType) _signalFunctionType ).Value = value;
                    if (name != null)
                    {
                        PropertyInfo pi = _signalFunctionType.GetType().GetProperty( name );
                        if (pi != null)
                        {
                            if (!string.IsNullOrWhiteSpace( value ))
                                pi.SetValue( _signalFunctionType, value, null );
                        }
                    }
                }
                else if (_signalFunctionType is XmlElement)
                {
                    var signal = (XmlElement) _signalFunctionType;
                    if (string.IsNullOrWhiteSpace( value ))
                        signal.RemoveAttribute( name );
                    else if (name != null) signal.SetAttribute( name, value );
                }
            }
        }