public static void ChangeObject(this IAlterProcessor proc, IAbstractObjectStructure obj, IAbstractObjectStructure newObj) { var tbl = obj as ITableStructure; if (tbl != null) { throw new AlterNotPossibleError(); } var col = obj as IColumnStructure; if (col != null) { proc.ChangeColumn(col, (IColumnStructure)newObj); return; } var cnt = obj as IConstraint; if (cnt != null) { proc.ChangeConstraint(cnt, (IConstraint)newObj); return; } var spe = obj as ISpecificObjectStructure; if (spe != null) { proc.ChangeSpecificObject(spe, (ISpecificObjectStructure)newObj); return; } var sch = obj as ISchemaStructure; if (sch != null) { proc.ChangeSchema(sch, (ISchemaStructure)newObj); return; } var dom = obj as IDomainStructure; if (dom != null) { proc.ChangeDomain(dom, (IDomainStructure)newObj); return; } }