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(); }; }
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 += ")"; }
private void button1_Click(object sender, EventArgs e) { StringChanger Str = new StringChanger(textBox1.Text); label1.Text = Str.FirstLetterCut(Str.StringSplitter(textBox1.Text)); }