private CustomListRow AddRow <T>(CustomListRow parent, string key, T obj, ToStringDelegate <T> del, bool valueBold) where T : IEquatable <T> { CustomListRow row = CreateNewRow <T>(key + ": ", new ToStringWrapper <T>(obj, del), valueBold); parent.AddChild(row); return(row); }
public QueryLogBuffer(LibraryHandle libraryHandle) : base(true) { _newBuffder = libraryHandle.GetUnmanagedDelegate<NewBufferDelegate>(); _delete = libraryHandle.GetUnmanagedDelegate<DeleteBufferDelegate>(); _size = libraryHandle.GetUnmanagedDelegate<GetSizeDelegate>(); _toString = libraryHandle.GetUnmanagedDelegate<ToStringDelegate>(); handle = _newBuffder(); }
/// <summary> /// Checks to see whether the provided object has a ToString() override method /// </summary> /// <param name="instance">The object to check</param> private bool OverridesToString(object instance) { if (instance == null) { return(false); } ToStringDelegate test = instance.ToString; return(test.Method.DeclaringType == instance.GetType()); }
private static void Main(string[] args) { //ConnectAzureRepos(); ToStringDelegate toString = PrintToString; Student Biggo = new Student("Biggo"); Dog Bingo = new Dog(45); toString(Bingo); toString(Biggo); PrintDelegate delegatedPrint = PrintInt; delegatedPrint(32); delegatedPrint = PrintMoney; //can also be called with the Invoke Method delegatedPrint.Invoke(45); PrintHelper(delegatedPrint, 7000); delegatedPrint = PrintInt; PrintHelper(delegatedPrint, 7000); //multicast delegates PrintDelegate multiPrintDelegate = PrintInt; multiPrintDelegate += PrintMoney; multiPrintDelegate += PrintHexadecimal; //call the delegate and all the methods associated with it multiPrintDelegate(500); //multiCast multiplication MathDelegate delegatedMath = Add; delegatedMath += Subtract; delegatedMath += Multiply; delegatedMath += Divide; delegatedMath(500, 2); PairDelegate(); Console.ReadLine(); }
/// <summary> /// Добавление новой категории в список по делегату для сравнения. /// </summary> /// <typeparam name="TD">Тип Dat-класса (BaseDat<TD>)</typeparam> /// <typeparam name="TS">Тип Set-класса (BaseSet<TD,TS>)</typeparam> /// <param name="text">Видимое название категории</param> /// <param name="tostring">Делегат string ToStringDelegate<TD>(TD value). /// Пример: delegate(TestDat val){return val.Date.ToShortDateString();} /// </param> /// <param name="compare">Делегат для сравнения двух Dat-классов int Comparison<TD>(TD dat). /// При помощи делегата можно сравнить два Dat-класса по любому признаку. /// По этому признаку будет отсортирован массив значений, и затем будет работать фильтр. /// Пример:delegate(TestDat dat1, TestDat dat2){return DateTime.Compare(dat1.Date.Date, dat2.Date.Date);} /// В этом примере будет построен список по датам без учета времени. /// </param> /// <returns>Ссылку на TreeNode с созданной категорией</returns> public TreeNode AddGroup <TD, TS>(string text, ToStringDelegate <TD> tostring, Comparison <TD> compare) where TS : BaseSet <TD, TS>, new() where TD : BaseDat <TD>, new() { TS set = SetClass as TS; const int docImageIndex = 0; const int folderImageIndex = 1; inCheckingMode = true; TreeNode root = new TreeNode(text); root.Name = ""; root.Tag = compare; root.ImageIndex = folderImageIndex; root.SelectedImageIndex = folderImageIndex; Nodes.Add(root); //List<TD> list = set.ConvertType<TD>(); //list.Sort(compare); set.Sort(compare); List <TreeNode> nodes = new List <TreeNode>(); TD prev = null; foreach (TD dat in set) { if (prev == null || compare(prev, dat) != 0) { TreeNode node = new TreeNode(tostring(dat)); node.Tag = dat; node.ImageIndex = docImageIndex; node.SelectedImageIndex = docImageIndex; node.Checked = true; nodes.Add(node); prev = dat; } } if (nodes.Count > 0) { root.Nodes.AddRange(nodes.ToArray()); } root.Checked = true; inCheckingMode = false; return(root); }
public XGMidiParameter(XGMidiIODevice host, string name, int address, int count, int min, int max, int center) { this.Host = host; this.Name = name; this.Address = address; this.Count = count; this.MinValue = min; this.MaxValue = max; this.CenterValue = center; this.ToStringConverter = DefaultToString; this.WriteValueEncoding = v => v; this.ReadValueEncoding = v => v; }
public static string RunToString <T>(T target) { ToStringDelegate <T> toString = null; Type targetType = target.GetType(); if (ToStringDynamicMethod.toStrings.ContainsKey(targetType)) { toString = ToStringDynamicMethod.toStrings[targetType] as ToStringDelegate <T>; } else { toString = ToStringDynamicMethod.CreateToString(target); ToStringDynamicMethod.toStrings.Add(targetType, toString); } return(toString(target)); }
public static string RunToString <T>(T target) { ToStringDelegate <T> toString = null; var targetType = target.GetType(); if (toStrings.ContainsKey(targetType)) { toString = toStrings[targetType] as ToStringDelegate <T>; } else { toString = CreateToString(target); toStrings.Add(targetType, toString); } return(toString(target)); }
public unsafe QueryFunctions(LibraryHandle handle) { Create = handle.GetUnmanagedDelegate <CreateQueryDelegate>(); Delete = handle.GetUnmanagedDelegate <DeleteQueryDelegate>(); Execute = handle.GetUnmanagedDelegate <ExecuteQueryDelegate>(); DeleteCursor = handle.GetUnmanagedDelegate <DeleteCursorDelegate>(); SetHints = handle.GetUnmanagedDelegate <SetHintsDelegate>(); AddOr = handle.GetUnmanagedDelegate <AddOrDelegate>(); CursorResult = handle.GetUnmanagedDelegate <CursorResultDelegate>(); NewBuffer = handle.GetUnmanagedDelegate <QueryFunctions.NewBufferDelegate>(); DeleteBuffer = handle.GetUnmanagedDelegate <QueryFunctions.DeleteBufferDelegate>(); BufferSize = handle.GetUnmanagedDelegate <GetSizeDelegate>(); BufferToString = handle.GetUnmanagedDelegate <ToStringDelegate>(); }
public XGMultiEQParams(XGMidiIODevice host) : base(host, "MULTI EQ", 0x024000) { bandParams = new BandParameter[5]; ToStringDelegate dBStringFunc = XGMidiParameter.MakePlusMinusToStringFunc("-", "dB", "+0dB", "+", "dB", null); ToStringDelegate QStringFunc = v => (v * 0.1).ToString("0.0"); Type = AddParameter("Type", 0, 0, 4, 0, XGMidiParameter.MakeTableToStringFunc("FLAT", "JAZZ", "POPS", "ROCK", "CLASSIC")); Gain1 = AddParameter("Gain1", 1, 0x34, 0x4C, 0x40, dBStringFunc); Freq1 = AddParameter("Freq1", 2, 0x04, 0x28, 0x04, XGMidiParameter.FreqToString); Q1 = AddParameter("Q1", 3, 0x01, 0x78, 0x07, QStringFunc); Shape1 = AddParameter("Shape1", 4, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[0] = new BandParameter(Gain1, Freq1, Q1, Shape1, null); Gain2 = AddParameter("Gain2", 5, 0x34, 0x4C, 0x40, dBStringFunc); Freq2 = AddParameter("Freq2", 6, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q2 = AddParameter("Q2", 7, 0x01, 0x78, 0x07, QStringFunc); bandParams[1] = new BandParameter(Gain2, Freq2, Q2, null, null); Gain3 = AddParameter("Gain3", 9, 0x34, 0x4C, 0x40, dBStringFunc); Freq3 = AddParameter("Freq3", 10, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q3 = AddParameter("Q3", 11, 0x01, 0x78, 0x07, QStringFunc); bandParams[2] = new BandParameter(Gain3, Freq3, Q3, null, null); Gain4 = AddParameter("Gain4", 13, 0x34, 0x4C, 0x40, dBStringFunc); Freq4 = AddParameter("Freq4", 14, 0x0E, 0x36, 0x0E, XGMidiParameter.FreqToString); Q4 = AddParameter("Q4", 15, 0x01, 0x78, 0x07, QStringFunc); bandParams[3] = new BandParameter(Gain4, Freq4, Q4, null, null); Gain5 = AddParameter("Gain5", 17, 0x34, 0x4C, 0x40, dBStringFunc); Freq5 = AddParameter("Freq5", 18, 0x1C, 0x3A, 0x1C, XGMidiParameter.FreqToString); Q5 = AddParameter("Q5", 19, 0x01, 0x78, 0x07, QStringFunc); Shape5 = AddParameter("Shape5", 20, 0, 1, 0, XGMidiParameter.MakeTableToStringFunc("SHELVING", "PEAKING")); bandParams[4] = new BandParameter(Gain5, Freq5, Q5, null, Shape5); Bands = new ReadOnlyCollection <BandParameter>(bandParams); }
public static void Run() { Console.WriteLine(nameof(TestByRefLikeTypeMethod)); // Ensure things we reflect on are in the static callgraph if (string.Empty.Length > 0) { default(ByRefLike).ToString(); ToStringDelegate s = null; s = s.Invoke; } Type byRefLikeType = GetTestType(nameof(TestByRefLikeTypeMethod), nameof(ByRefLike)); MethodInfo toStringMethod = byRefLikeType.GetMethod("ToString"); var toString = (ToStringDelegate)toStringMethod.CreateDelegate(typeof(ToStringDelegate)); ByRefLike foo = new ByRefLike(123); if (toString(ref foo) != "123") { throw new Exception(); } }
/// <summary> /// Computes a <see cref="DiscrepancyTestResult"/> for a specified property /// </summary> /// <typeparam name="T">The type of the property being tested</typeparam> /// <param name="x">Left operand</param> /// <param name="y">Right operand</param> /// <param name="discrepancy">Discrepancy being tested</param> /// <param name="getter">A delegate that returns the value of the property from a <see cref="PatientProfile"/></param> /// <param name="tester">A delegate that tests for equality of the property - need not be null-safe</param> /// <param name="toString">A delegate that converts the property to a string</param> /// <returns></returns> private static DiscrepancyTestResult GetResult <T>(PatientProfile x, PatientProfile y, PatientProfileDiscrepancy discrepancy, PropertyGetter <T> getter, TestEqual <T> tester, ToStringDelegate <T> toString) { var vx = getter(x); var vy = getter(y); if (Equals(vx, default(T)) && Equals(vy, default(T))) { return(new DiscrepancyTestResult(discrepancy, false, StringDiff.Compute("", "", true))); } if (Equals(vx, default(T))) { return(new DiscrepancyTestResult(discrepancy, true, StringDiff.Compute("", toString(vy), true))); } if (Equals(vy, default(T))) { return(new DiscrepancyTestResult(discrepancy, true, StringDiff.Compute(toString(vx), "", true))); } return(new DiscrepancyTestResult(discrepancy, !tester(vx, vy), StringDiff.Compute(toString(vx), toString(vy), true))); }
/// <summary> /// Constructs a wrapper for the given object. /// </summary> public ToStringWrapper(T value) { this.value = value; this.toStringDelegate = ToStringWrapper <T> .DefaultToStringDelegate; }
public TreeNode AddGroup <TD, TS>(string name, ToStringDelegate prop, ToStringDelegate child, ToStringDelegate parent) where TS : BaseSet <TD, TS>, new() where TD : BaseDat <TD>, new() { List <string> chs = new List <string>(); TreeNode par = null; TreeNode chi = null; TS set = SetClass as TS; //DatDescriptor dd = set.GetDescriptor(prop); TreeNode ret = new TreeNode(name); ret.Checked = true; ret.Tag = prop; foreach (TD dat in set) { string pr = parent(dat); if (Common.IsNullOrEmpty(pr)) { par = ret; } else { par = null; foreach (TreeNode t in ret.Nodes) { if (t.Text == pr) { par = (TreeNode)t; } } if (par == null) { par = new TreeNode(pr); ret.Nodes.Add(par); par.Checked = true; } } string ch = child(dat); if (Common.IsNullOrEmpty(ch)) { chi = par; } else { chi = null; foreach (TreeNode t in par.Nodes) { if (t.Text == ch) { chi = (TreeNode)t; } } if (chi == null) { chi = new TreeNode(ch); par.Nodes.Add(chi); chi.Checked = true; } } //if (dd != null) //{ string val = prop(dat); if (!Common.IsNullOrEmpty(val) && !chs.Exists(delegate(string s) { return(s == val); })) { TreeNode node = new TreeNode(val); node.Checked = true; node.Tag = val; chs.Add(val); chi.Nodes.Add(node); } //} } Nodes.Add(ret); return(ret); }
/// <summary> /// Constructs a wrapper for the given object such that the ToString /// returns the given string. /// </summary> public ToStringWrapper(T value, string toString) { this.value = value; this.toString = toString; this.toStringDelegate = this.FixedToStringDelegate; }
/// <summary> /// Добавление новой категории в список только по имени свойства. /// Все остальные данные берутся из дескриптора. /// Для свойства с этим именем нужен делегат Get_#Name#, иначе будет работать через Reflection /// </summary> /// <typeparam name="TD">Тип Dat-класса (BaseDat<TD>)</typeparam> /// <typeparam name="TS">Тип Set-класса (BaseSet<TD,TS>)</typeparam> /// <param name="name">Название свойства</param> /// <param name="text">Видимое название категории</param> /// <param name="tostring">Делегат string ToStringDelegate(object value). /// Пример:delegate(object val){return "Клиент " + val.ToString();}); /// </param> /// <returns>Ссылку на TreeNode с созданной категорией</returns> public TreeNode AddGroup <TD, TS>(string name, string text, ToStringDelegate tostring) where TS : BaseSet <TD, TS>, new() where TD : BaseDat <TD>, new() { TS set = SetClass as TS; const int docImageIndex = 0; const int folderImageIndex = 1; inCheckingMode = true; TreeNode root = new TreeNode(text); root.Name = name; root.ImageIndex = folderImageIndex; root.SelectedImageIndex = folderImageIndex; Nodes.Add(root); DatDescriptor dd = set.GetDescriptor(name); root.Tag = dd; SortedDictionary <string, object> dict = new SortedDictionary <string, object>(); foreach (TD dat in set) { object val; if (dd != null) { val = dd.GetValue(dat); } else { val = "Не найден дескриптор для " + name; } string key = tostring(val); if (!dict.ContainsKey(key)) { if (val is IDat) { val = ((IDat)val).ID; } dict.Add(key, val); } } List <TreeNode> nodes = new List <TreeNode>(); foreach (KeyValuePair <string, object> de in dict) { TreeNode node = new TreeNode(de.Key); node.Tag = de.Value; node.ImageIndex = docImageIndex; node.SelectedImageIndex = docImageIndex; node.Checked = true; nodes.Add(node); } if (nodes.Count > 0) { root.Nodes.AddRange(nodes.ToArray()); } root.Checked = true; inCheckingMode = false; return(root); }
/// <summary> /// Constructs a wrapper for the given object such that the ToString /// translates to the given ToStringDelegate. /// </summary> public ToStringWrapper(T value, ToStringDelegate toStringDelegate) { this.value = value; this.toStringDelegate = toStringDelegate; }
protected XGMidiParameter AddParameter(string name, int offset, int min, int max, int center, ToStringDelegate valStringConverter) { XGMidiParameter p = AddParameter(name, offset, min, max, center); p.ToStringConverter = valStringConverter; return(p); }
protected XGMidiParameter AddParameter(string name, int offset, int min, int max, int center, ToStringDelegate valStringConverter) { XGMidiParameter p = AddParameter(name, offset, min, max, center); p.ToStringConverter = valStringConverter; return p; }
public ToStringWrapper(T item, ToStringDelegate <T> toStringDelegate) { this.item = item; this.toStringDelegate = toStringDelegate; }
public static string ToStringEx <T>(this IEnumerable <T> collection, string name, ToStringDelegate <T> toString) { System.Text.StringBuilder sb = new System.Text.StringBuilder(name); sb.Append(" = {\n"); if (collection != null) { var iter = collection.GetEnumerator(); while (iter.MoveNext()) { sb.AppendFormat("\t{0},\n", toString(iter.Current)); } } sb.Append("}"); return(sb.ToString()); }