source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/AdvanceMath/Design/InstanceConstructorAttribute.cs @ 4507

Revision 4507, 2.6 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1#region MIT License
2/*
3 * Copyright (c) 2005-2008 Jonathan Mark Porter. http://physics2d.googlepages.com/
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights to
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 * the Software, and to permit persons to whom the Software is furnished to do so,
10 * subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22#endregion
23
24
25
26
27using System;
28using System.Reflection;
29
30namespace AdvanceMath.Design
31{
32    [global::System.AttributeUsage(AttributeTargets.Constructor, Inherited = false, AllowMultiple = false)]
33    public sealed class InstanceConstructorAttribute : Attribute
34    {
35        string[] parameterNames;
36
37
38
39        /// <summary>
40        ///
41        /// </summary>
42        /// <param name="order">"CSV list"</param>
43        public InstanceConstructorAttribute( string parameterNames)
44        {
45            this.parameterNames = parameterNames.Split(',');
46        }
47        public string[] ParameterNames
48        {
49            get { return parameterNames; }
50        }
51        public static ConstructorInfo GetConstructor(Type t, out string[] paramNames)
52        {
53            foreach (ConstructorInfo method in t.GetConstructors())
54            {
55                object[] atts = method.GetCustomAttributes(typeof(InstanceConstructorAttribute), true);
56
57                if (atts.Length > 0)
58                {
59                    InstanceConstructorAttribute att = (InstanceConstructorAttribute)atts[0];
60                    if (method.GetParameters().Length == att.ParameterNames.Length)
61                    {
62                        paramNames = att.ParameterNames;
63                        return method;
64                    }
65                }
66            }
67            paramNames = null;
68            return null;
69        }
70    }
71}
Note: See TracBrowser for help on using the repository browser.