예제 #1
0
        static void Main(string[] args)
        {
            IBO_Authentication _authentication;
            IBO_User           _user;
            string             _login;

            for (int _provider = 0; _provider < 3; _provider++)
            {
                switch (_provider)
                {
                case 0:
                    Console.WriteLine("--- remoting...");
                    _authentication
                        = new RC_Authentication(
                              "tcp://127.0.0.1:8085/OGen.NTier.UTs.distributedlayer.remoting.server.RS_Authentication.remoting"
                              //"http://127.0.0.1:8085/OGen.NTier.UTs.distributedlayer.remoting.server.RS_Authentication.soap"
                              );

                    _user
                        = new RC_User(
                              "tcp://127.0.0.1:8085/OGen.NTier.UTs.distributedlayer.remoting.server.RS_User.remoting"
                              //"http://127.0.0.1:8085/OGen.NTier.UTs.distributedlayer.remoting.server.RS_User.soap"
                              );
                    break;

                case 1:
                    Console.WriteLine("--- webservices...");
                    _authentication
                        = new WC_Authentication.WC_Authentication(
                              "http://127.0.0.1:2937/WS_Authentication.asmx"
                              );

                    _user
                        = new WC_User.WC_User(
                              "http://127.0.0.1:2937/WS_User.asmx"
                              );
                    break;

                default:
                    Console.WriteLine("--- direct assembly...");
                    _authentication
                        = new BC_Authentication(
                              );

                    _user
                        = new BC_User(
                              );
                    break;
                }

                Console.WriteLine(
                    "authentication string: {0}\n",
                    _login = _authentication.Login(
                        "fmonteiro",
                        "passpub"
                        )
                    );

                OGen.NTier.UTs.lib.datalayer.proxy.ISO_User _so_user
                    = new OGen.NTier.UTs.lib.datalayer.proxy.SO_User(
                          0L,
                          string.Format(
                              "login-{0}",
                              Guid.NewGuid().ToString()
                              ),
                          "password",
                          0
                          );
                _so_user.SomeNullValue_isNull = true;
                Console.WriteLine(
                    "IDUser: {0}; Login: {1}; Password: {2}; SomeNullValue: {3} (is null: {4})",
                    _so_user.IDUser,
                    _so_user.Login,
                    _so_user.Password,
                    _so_user.SomeNullValue,
                    _so_user.SomeNullValue_isNull
                    );

                long _iduser;
                bool _constraintExists;
                Console.WriteLine(
                    "IDUser: {0}; Constraint Exists: {1}",
                    _iduser = _user.insObject(
                        (SO_User)_so_user,
                        true,
                        _login,
                        out _constraintExists
                        ),
                    _constraintExists
                    );

                bool _exists;
                _so_user = _user.getObject(
                    _iduser,
                    _login,
                    out _exists
                    );
                Console.WriteLine(
                    "Exists: {5}; IDUser: {0}; Login: {1}; Password: {2}; SomeNullValue: {3} (is null: {4})",
                    _so_user.IDUser,
                    _so_user.Login,
                    _so_user.Password,
                    _so_user.SomeNullValue,
                    _so_user.SomeNullValue_isNull,
                    _exists
                    );

                long      _recordLength;
                SO_User[] _users = _user.Record_Open_byGroup(
                    3L,
                    1,
                    4,
                    _login,
                    out _recordLength
                    );
                Console.WriteLine(
                    "Record Length: {0}",
                    _recordLength
                    );
                for (int i = 0; i < _users.Length; i++)
                {
                    Console.WriteLine(
                        //"IDUser: {0}; Login: {1}",
                        "IDUser: {0}; Login: {1}; Password: {2}; SomeNullValue: {3} (is null: {4})",
                        _users[i].IDUser,
                        _users[i].Login,
                        _users[i].Password,
                        _users[i].SomeNullValue,
                        _users[i].SomeNullValue_isNull
                        );
                }

                _authentication.Logout();
            }
            return;



            //OGen.NTier.UTs.lib.businesslayer-2.0
            Assembly _assembly = Assembly.Load(
                                #if NET_1_1
                "OGen.NTier.UTs.lib.businesslayer-1.1"
                                #elif NET_2_0
                "OGen.NTier.UTs.lib.businesslayer-2.0"
                                #endif
                );

            if (_assembly != null)
            {
                Type[] _types = _assembly.GetTypes();
                for (int t = 0; t < _types.Length; t++)
                {
                    Type _type = (Type)_types[t];

                    object[] _attibutes = _type.GetCustomAttributes(
                        typeof(BOClassAttribute),
                        true                        //false
                        );
                    if (
                        (_attibutes.Length > 0)
                        &&
                        (_type.Name.IndexOf("BO0_") != 0)
                        &&
                        (_type.Name.IndexOf("BBO0_") != 0)
                        )
                    {
                        Console.Write("{0};  ", _type.Name);

                        for (int c = 0; c < _attibutes.Length; c++)
                        {
                            BOClassAttribute _attribute
                                = (BOClassAttribute)_attibutes[c];
                            Console.WriteLine(
                                "name:{0};",
                                _attribute.Name
                                );

                            MethodInfo[] _methods = _type.GetMethods(
                                BindingFlags.Public |
                                BindingFlags.Instance
                                );
                            for (int m = 0; m < _methods.Length; m++)
                            {
                                if (Attribute.IsDefined(
                                        _methods[m],
                                        typeof(BOMethodAttribute)
                                        ))
                                {
                                    Attribute[] _attributes = Attribute.GetCustomAttributes(
                                        _methods[m],
                                        typeof(BOMethodAttribute),
                                        true
                                        );

                                    for (int a = 0; a < _attributes.Length; a++)
                                    {
                                        //if (_attributes[a].GetType() == typeof(BOMethodAttribute)) {
                                        BOMethodAttribute _propertyattribute
                                            = (BOMethodAttribute)_attributes[a];
                                        Console.WriteLine(
                                            "\tname:{0}; distribute:{1};",
                                            _propertyattribute.Name,
                                            _propertyattribute.Distribute
                                            );
                                        //}
                                    }
                                    Console.WriteLine(
                                        "\t.{0}:{1}.{2}(",
                                        _methods[m].Name,
                                        _methods[m].ReturnType.Namespace,
                                        _methods[m].ReturnType.Name
                                        );
                                    ParameterInfo[] _parameterinfo = _methods[m].GetParameters();
                                    for (int p = 0; p < _parameterinfo.Length; p++)
                                    {
                                        Console.WriteLine(
                                            "\t\tname:{0}; type:{1}; isOut:{2}; isByRef:{3}; isEnum:{4}; isClass:{5}; isValueType:{6}",
                                            _parameterinfo[p].Name,
                                            _parameterinfo[p].ParameterType,
                                            _parameterinfo[p].IsOut,
                                            _parameterinfo[p].ParameterType.IsByRef,
                                            _parameterinfo[p].ParameterType.IsEnum,
                                            _parameterinfo[p].ParameterType.IsClass,
                                            _parameterinfo[p].ParameterType.IsValueType
                                            );
                                    }
                                    Console.WriteLine("\t)");
                                }
                            }
                            Console.WriteLine();
                        }
                    }
                }
            }
            return;

            //DO_UserGroup _usergroup_test = new DO_UserGroup(
            //    //new DBConnection(
            //    //    DBServerTypes.SQLServer,
            //    //    "server=127.0.0.1;uid=sa;pwd=passpub;database=OGen-NTier_UTs;"
            //    //)
            //);
            //_usergroup_test.IDGroup = 1;
            //_usergroup_test.IDUser = 1;
            //_usergroup_test.Relationdate_isNull = true;
            //_usergroup_test.Defaultrelation_isNull = true;
            //_usergroup_test.setObject(true);

            //OGen.NTier.UTs.lib.datalayer.UTs.UT__utils _ut_utils
            //    = new OGen.NTier.UTs.lib.datalayer.UTs.UT__utils();
            //_ut_utils.TestFixtureSetUp();
            //_ut_utils.UT_Check_DataObjects_integrity();
            //return;

            //OGen.NTier.UTs.lib.datalayer.UTs.UT_User _ut_user
            //    = new OGen.NTier.UTs.lib.datalayer.UTs.UT_User();
            //_ut_user.TestFixtureSetUp();
            //_ut_user.UT_hasChanges();
            //return;


            //OGen.NTier.UTs.lib.datalayer.UTs.UT_UserGroup
            //	_ut_usergroup = new OGen.NTier.UTs.lib.datalayer.UTs.UT_UserGroup();
            //_ut_usergroup.TestFixtureSetUp();
            //_ut_usergroup.UT_bugPostgreSQL_noFunctionMatchesTheGivenNameAndArgumentTypes();
            ////_ut_usergroup.UT_NullableFields();
            //return;


            //DO_Config _config_test = new DO_Config();
            //_config_test.Connection.Open();
            //_config_test.Connection.Transaction.Begin();
            //_config_test.Fields.Name = "test";
            //_config_test.Fields.Description = "test";
            //_config_test.Fields.Config = "test";
            //_config_test.Fields.Type = 1;
            //try {
            //	_config_test.setObject(true);
            //	Console.WriteLine("ok");
            //} catch {
            //	Console.WriteLine("ko");
            //}
            //_config_test.Connection.Transaction.Rollback();
            //_config_test.Connection.Transaction.Terminate();
            //_config_test.Connection.Close();
            //_config_test.Dispose();
            //return;



            const int _cycles = 50;

            DBConnection[] _cons = new DBConnection[] {
                #region new DBConnection(DBServerTypes.SQLServer, ...),
                DBConnectionsupport.CreateInstance(
                    DBServerTypes.SQLServer,

                    DBUtilssupport.GetInstance(DBServerTypes.SQLServer).ConnectionString.Build(
                        "127.0.0.1",
                        "sa",
                        "passpub",
                        "OGen-NTier_UTs"
                        )
                    ),
                #endregion
                #region new DBConnection(DBServerTypes.PostgreSQL, ...)
                DBConnectionsupport.CreateInstance(
                    DBServerTypes.PostgreSQL,
                    DBUtilssupport.GetInstance(DBServerTypes.PostgreSQL).ConnectionString.Build(
                        "127.0.0.1",
                        "postgres",
                        "passpub",
                        "OGen-NTier_UTs"
                        )
                    )
                #endregion
                //#region new DBConnection(DBServerTypes.MySQL, ...)
                //, DBConnectionsupport.CreateInstance(
                //    DBServerTypes.MySQL,
                //    DBUtilssupport.GetInstance(DBServerTypes.MySQL).ConnectionString.Build(
                //        "127.0.0.1",
                //        "root",
                //        "passpub",
                //        "OGen-NTier_UTs"
                //    )
                //)
                //#endregion
            };

            long _conter = 0L;
            for (int _compiled = 0; _compiled < 2; _compiled++)
            {
                for (int _con = 0; _con < _cons.Length; _con++)
                {
                    _cons[_con].Open();
                    _cons[_con].Transaction.Begin();
                    for (int _cached = 0; _cached < 2; _cached++)
                    {
                        DO_Config _config = new DO_Config(_cons[_con]);
                        #region _config.setObject();
                        _conter = DateTime.Now.Ticks;

                        for (int c = 0; c < _cycles; c++)
                        {
                            _config.Fields.Name   = c.ToString();
                            _config.Fields.Config = "DELETE THIS, IT IS A TEST";
                            _config.Fields.Type   = 2;
                            _config.setObject(true);
                        }

                        Console.WriteLine(
                            "setObject()      \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );
                        #endregion
                        #region _config.Record.Open_...(false);
                        _conter = DateTime.Now.Ticks;

                        _config.Record.Open_all();
                        while (_config.Record.Read())
                        {
                            ;
                        }
                        _config.Record.Close();

                        Console.WriteLine(
                            "Record.Open()    \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );
                        #endregion
                        #region _config.delObject();
                        _conter = DateTime.Now.Ticks;

                        _config.Record.Open_all();
                        while (_config.Record.Read())
                        {
                            if (_config.Fields.Config == "DELETE THIS, IT IS A TEST")
                            {
                                _config.delObject();
                            }
                        }
                        _config.Record.Close();

                        Console.WriteLine(
                            "delObject()      \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );
                        #endregion
                        #region _config.getObject();
                        _conter = DateTime.Now.Ticks;

                        _config.Fields.Name   = "SomeIntConfig";
                        _config.Fields.Config = "1245";
                        _config.Fields.Type   = 4;
                        _config.setObject(true);

                        for (int c = 0; c < _cycles; c++)
                        {
                            _config.getObject("SomeIntConfig");
                        }

                        Console.WriteLine(
                            "getObject()      \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );
                        #endregion
                        _config.Dispose(); _config = null;
                        //---
                        DO_User _do_user = new DO_User(_cons[_con]);

                        #region _do_user.insObject();
                        _conter = DateTime.Now.Ticks;

                        for (int c = 0; c < _cycles; c++)
                        {
                            bool _constraint;
                            _do_user.Fields.Login    = c.ToString();
                            _do_user.Fields.Password = "******";
                            _do_user.insObject(true, out _constraint);
                        }

                        _do_user.Record.Open_all();
                        while (_do_user.Record.Read())
                        {
                            if (_do_user.Fields.Password == "DELETE THIS, IT IS A TEST")
                            {
                                _do_user.delObject();
                            }
                        }
                        _do_user.Record.Close();

                        Console.WriteLine(
                            "insObject()      \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );
                        #endregion

                        _conter = DateTime.Now.Ticks;
                        for (int c = 0; c < _cycles; c++)
                        {
                            if (!_do_user.isObject_byLogin("fmonteiro"))
                            {
                                bool _constraint;
                                _do_user.Fields.Login    = "******";
                                _do_user.Fields.Password = "******";
                                _do_user.insObject(true, out _constraint);
                            }
                            _do_user.getObject_byLogin("fmonteiro");
                        }
                        Console.WriteLine(
                            "getObject_by()   \t{0}\tcached:{1}\tcompiled:{2}\t{3}",
                            DBConnectionsupport.GetDBServerType(_cons[_con]),
                            (_cached == 1),
                            (_compiled == 1),
                            (DateTime.Now.Ticks - _conter).ToString()
                            );

                        _do_user.Dispose(); _do_user = null;
                    }
                    _cons[_con].Transaction.Rollback();
                    _cons[_con].Transaction.Terminate();
                    _cons[_con].Close();
                }
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadLine();
        }
예제 #2
0
        public static XS__metadataBusiness Load_fromAssembly(
            string assemblyFilePath_in,

            XS__RootMetadata root_ref_in,
            int index_in
            )
        {
            #region XS__metadataBusiness _output = ...;
            XS__metadataBusiness _output = new XS__metadataBusiness();

            _output.root_metadatabusiness_ = ROOT + "." + METADATABUSINESS + "[" + index_in.ToString() + "]";
            _output.parent_ref             = root_ref_in; // ToDos: now!
            if (root_ref_in != null)
            {
                _output.root_ref = root_ref_in;
            }
            #endregion

            #region Assembly _assembly = Assembly.LoadFrom(assemblyFilePath_in);
            Assembly _assembly
            //= Assembly.LoadFile(assemblyFilePath_in);
                = Assembly.LoadFrom(assemblyFilePath_in);
            //_assembly.GetFiles(true);
            //_assembly.GetReferencedAssemblies();

            if (_assembly == null)
            {
                throw new Exception(String.Format(
                                        "can't load assembly 'assemblyName_in'\n at: {0}.{1}.Load_fromAssembly();",
                                        typeof(XS__metadataBusiness).Namespace,
                                        typeof(XS__metadataBusiness).Name,
                                        assemblyFilePath_in
                                        ));
            }
            #endregion

            bool   _isBO  = false;
            bool   _isBDO = false;
            int    _class_index;
            int    _method_index;
            int    _property_index;
            Type[] _types = _assembly.GetTypes();
            for (int t = 0; t < _types.Length; t++)
            {
                Type _type = (Type)_types[t];

                object[] _classattributes = _type.GetCustomAttributes(
                    typeof(BOClassAttribute),
                    true                    //false
                    );
                if (
                    (_classattributes.Length > 0)
                    //&&
                    //(_type.Name.IndexOf("BO0_") != 0)
                    //&&
                    //(_type.Name.IndexOf("BDO0_") != 0)
                    &&
                    (
                        (_type.Name.IndexOf("BO_") == 0)
                        ||
                        (_type.Name.IndexOf("BDO_") == 0)
                    )
                    )
                {
                    for (int ca = 0; ca < _classattributes.Length; ca++)
                    {
                        BOClassAttribute _attribute
                            = (BOClassAttribute)_classattributes[ca];

                        _isBO  = false;
                        _isBDO = false;
                        _output.Classes.ClassCollection.Add(
                            out _class_index,
                            //_attribute.Name
                            (_isBO = (_type.Name.IndexOf("BO_") == 0))
                ? _type.Name.Substring(3)
                : (
                                (_isBDO = (_type.Name.IndexOf("BDO_") == 0))
                                ? _type.Name.Substring(4)
                                : _type.Name
                                )
                            );
                        _output.Classes.ClassCollection[_class_index].Type
                            = ((_isBO)
                ? XS_BoEnumeration.BO
                : ((_isBDO)
                        ? XS_BoEnumeration.BDO
                        : XS_BoEnumeration.invalid
                   )
                               );

                        MethodInfo[] _methods = _type.GetMethods(
                            BindingFlags.Public |
                            BindingFlags.Instance
                            );
                        for (int m = 0; m < _methods.Length; m++)
                        {
                            if (Attribute.IsDefined(
                                    _methods[m],
                                    typeof(BOMethodAttribute)
                                    ))
                            {
                                Attribute[] _methodattributes = Attribute.GetCustomAttributes(
                                    _methods[m],
                                    typeof(BOMethodAttribute),
                                    true
                                    );

                                _method_index = -1;
                                for (int ma = 0; ma < _methodattributes.Length; ma++)
                                {
                                    if (_methodattributes[ma].GetType() == typeof(BOMethodAttribute))
                                    {
                                        BOMethodAttribute _methodattribute
                                            = (BOMethodAttribute)_methodattributes[ma];

                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection.Add(
                                            out _method_index,
                                            _methods[m].Name
                                            );
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].Distribute = _methodattribute.Distribute;
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].OutputType
                                            = translate(string.Format(
                                                            "{0}.{1}",
                                                            _methods[m].ReturnType.Namespace,
                                                            _methods[m].ReturnType.Name
                                                            ));
                                    }
                                }

                                ParameterInfo[] _parameterinfo = _methods[m].GetParameters();
                                for (int p = 0; p < _parameterinfo.Length; p++)
                                {
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection.Add(
                                        out _property_index,
                                        _parameterinfo[p].Name
                                        );
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].isOut = _parameterinfo[p].IsOut;
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].Type = translate(string.Format(
                                                           "{0}.{1}",
                                                           _parameterinfo[p].ParameterType.Namespace,
                                                           (_parameterinfo[p].ParameterType.Name.IndexOf('&') >= 0)
                ? _parameterinfo[p].ParameterType.Name.Substring(0, _parameterinfo[p].ParameterType.Name.Length - 1)
                : _parameterinfo[p].ParameterType.Name

                                                           ));
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].isRef = (_parameterinfo[p].ParameterType.IsByRef && !_parameterinfo[p].IsOut);
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].isParams = false;
                                }
                            }
                        }
                    }
                }
            }

            return(_output);
        }
예제 #3
0
        public static XS__metadataBusiness Load_fromAssembly(
            string assemblyFilePath_in,

            XS__RootMetadata root_ref_in,
            int index_in
            )
        {
            #region XS__metadataBusiness _output = ...;
            XS__metadataBusiness _output = new XS__metadataBusiness();

            _output.root_metadatabusiness_ = string.Concat(ROOT, ".", METADATABUSINESS, "[", index_in.ToString(System.Globalization.CultureInfo.CurrentCulture), "]");
            _output.parent_ref             = root_ref_in; // ToDos: now!
            if (root_ref_in != null)
            {
                _output.root_ref = root_ref_in;
            }
            #endregion

            #region Assembly _assembly = Assembly.LoadFrom(assemblyFilePath_in);
            Assembly _assembly
            //= Assembly.LoadFile(assemblyFilePath_in);
                = Assembly.LoadFrom(assemblyFilePath_in);
            //_assembly.GetFiles(true);
            //_assembly.GetReferencedAssemblies();

            if (_assembly == null)
            {
                throw new Exception(string.Format(
                                        System.Globalization.CultureInfo.CurrentCulture,
                                        "can't load assembly 'assemblyName_in'\n at: {0}.{1}.Load_fromAssembly();",
                                        typeof(XS__metadataBusiness).Namespace,
                                        typeof(XS__metadataBusiness).Name,
                                        assemblyFilePath_in
                                        ));
            }
            #endregion

            //bool _isBO = false;
            //bool _isBDO = false;
            int    _class_index;
            int    _method_index;
            int    _property_index;
            Type[] _types = _assembly.GetTypes();

#if NET_2_0
            Array.Sort(
                _types,
                delegate(
                    Type arg1,
                    Type arg2
                    ) {
                return(string.Compare(
                           arg1.Name,
                           arg2.Name,
                           false,
                           System.Globalization.CultureInfo.CurrentCulture
                           ));
            }
                );
#endif

            for (int t = 0; t < _types.Length; t++)
            {
                Type _type = (Type)_types[t];

                object[] _classattributes = _type.GetCustomAttributes(
                    typeof(BOClassAttribute),
                    true                    //false
                    );
                if (
                    (_classattributes.Length > 0)
                    &&
                    (_type.Name.IndexOf("SBO_", StringComparison.CurrentCulture) == 0)
                    )
                {
                    for (int ca = 0; ca < _classattributes.Length; ca++)
                    {
//						BOClassAttribute _attribute
//							= (BOClassAttribute)_classattributes[ca];

                        _output.Classes.ClassCollection.Add(
                            out _class_index,
                            //_attribute.Name
                            (_type.Name.IndexOf("SBO_", StringComparison.CurrentCulture) == 0)
                ? _type.Name.Substring(4)
                : _type.Name
                            );
                        _output.Classes.ClassCollection[_class_index].Namespace
                            = _type.Namespace;
                        _output.Classes.ClassCollection[_class_index].Type
                            = XS_BoEnumeration.invalid;

                        MethodInfo[] _methods = _type.GetMethods(
                            BindingFlags.Public |
                            //BindingFlags.Instance
                            BindingFlags.Static
                            );

#if NET_2_0
                        Array.Sort(
                            _methods,
                            delegate(
                                MethodInfo arg1,
                                MethodInfo arg2
                                ) {
                            return(string.Compare(
                                       arg1.Name,
                                       arg2.Name,
                                       false,
                                       System.Globalization.CultureInfo.CurrentCulture
                                       ));
                        }
                            );
#endif

                        for (int m = 0; m < _methods.Length; m++)
                        {
                            if (Attribute.IsDefined(
                                    _methods[m],
                                    typeof(BOMethodAttribute)
                                    ))
                            {
                                Attribute[] _methodattributes = Attribute.GetCustomAttributes(
                                    _methods[m],
                                    typeof(BOMethodAttribute),
                                    true
                                    );

                                _method_index = -1;
                                for (int ma = 0; ma < _methodattributes.Length; ma++)
                                {
                                    if (_methodattributes[ma].GetType() == typeof(BOMethodAttribute))
                                    {
                                        BOMethodAttribute _methodattribute
                                            = (BOMethodAttribute)_methodattributes[ma];

                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection.Add(
                                            out _method_index,
                                            _methods[m].Name
                                            );
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].Distribute = _methodattribute.Distribute;
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].IsSearch = _methodattribute.IsSearch;
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].IPParamNum = _methodattribute.IPParamNum;
                                        _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[
                                            _method_index
                                        ].OutputType
                                            = OGen.Libraries.Utilities.Type_ToString(_methods[m].ReturnType);
                                    }
                                }

                                ParameterInfo[] _parameterinfo = _methods[m].GetParameters();
                                for (int p = 0; p < _parameterinfo.Length; p++)
                                {
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection.Add(
                                        out _property_index,
                                        _parameterinfo[p].Name
                                        );
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].IsOut = _parameterinfo[p].IsOut;
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].Type = OGen.Libraries.Utilities.Type_ToString(_parameterinfo[p].ParameterType);
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].IsRef = (_parameterinfo[p].ParameterType.IsByRef && !_parameterinfo[p].IsOut);
                                    _output.Classes.ClassCollection[_class_index].Methods.MethodCollection[_method_index].Parameters.ParameterCollection[
                                        _property_index
                                    ].IsParams = false;
                                }
                            }
                        }
                    }
                }
            }

            return(_output);
        }