Пример #1
0
        public App()
        {
            startUpKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            pathToApp = System.Reflection.Assembly.GetExecutingAssembly().Location;

            changer = new StringChanger();
            KeyboardFilterHandler.BindDown += new EventHandler<EventArgs>(KeyboardFilterHandler_BindDown);
            this.Activated += new EventHandler(App_Activated);
            this.Exit += (o, e) =>
                {
                    SymbolReflector.Properties.Settings.Default.Save();
                };
        }
Пример #2
0
        static void Main(string[] args)
        {
            // 创建委托实例
            NumberChanger nc1 = new NumberChanger(AddNum);
            NumberChanger nc2 = new NumberChanger(MultNum);

            // 使用委托对象调用方法
            nc1(25, "");
            Console.WriteLine("Value of Num: {0}", getNum());
            nc2(5, "");
            Console.WriteLine("Value of Num: {0}", getNum());

            StringChanger c = new StringChanger(addString);

            c("tema");
            Console.WriteLine(c("tema"));
            Console.ReadKey();

            //委托链
            //委托的多播(Multicasting of a Delegate)

            /*s
             * 委托对象可使用 "+" 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托。
             * 使用委托的这个有用的特点,您可以创建一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播(multicasting),也叫组播。下面的程序演示了委托的多播:
             * - 方法移除一个委托
             */
            DelegateTest test  = null;
            DelegateTest test1 = new DelegateTest(writeDown);
            DelegateTest test2 = new DelegateTest(writeDown);
            DelegateTest test3 = new DelegateTest(writeDown);
            DelegateTest test4 = new DelegateTest(writeDown);


            test += test1;
            test += test2;
            test += test3;
            test += test4;

            test -= test1;
            test("qwerty");


            Console.Read();
        }
        public Parameter(Type type, string typeName, object obj, string name)
        {
            this.type     = type;
            this.typeName = typeName;
            this.obj      = obj;
            this.name     = name;

            var ms = type.GetFields().Where(t => !t.IsStatic).ToList();

            childs = new List <ChildParam>(ms.Count());

            foreach (var m in ms)
            {
                var ct = m.FieldType;
                var tn = StringChanger.Change(m.FieldType.Name);
                var cn = m.Name;
                var co = m.GetValue(obj);
                childs.Add(new ChildParam(ct, tn, co, cn, m));
            }
        }
        public MethodTesterInfo(MethodInfo info)
        {
            MethodName  = info.Name;
            isCoroutine = info.ReturnType.Name == "IEnumerator";

            var paramList = info.GetParameters();

            foreach (var param in paramList)
            {
                string typeName = StringChanger.Change(param.ParameterType.Name);

                object defaultValue = null;
                if (param.HasDefaultValue)
                {
                    defaultValue = param.DefaultValue;
                }
                else if (param.ParameterType.Name == "String")
                {
                    defaultValue = "";
                }
                else if (param.ParameterType.GetConstructor(Type.EmptyTypes) != null ||
                         param.ParameterType.IsValueType)
                {
                    defaultValue = Activator.CreateInstance(param.ParameterType);
                }

                list.Add(new Parameter(param.ParameterType, typeName, defaultValue, param.Name));
            }

            ViewString = "<color=blue>" + info.ReturnType.Name + "</color> " + info.Name + "(";
            foreach (var p in list)
            {
                ViewString += "<color=blue>" + p.typeName + "</color> " + p.name + ",";
            }
            if (paramList.Length > 0)
            {
                ViewString = ViewString.Remove(ViewString.Length - 1);
            }
            ViewString += ")";
        }
Пример #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            StringChanger Str = new StringChanger(textBox1.Text);

            label1.Text = Str.FirstLetterCut(Str.StringSplitter(textBox1.Text));
        }