public CommandConsole(string refTypes, ArgClass[] cls, bool init, string initDir, string[] initStrings) : base(init, initDir, initStrings) { for (int i = 0; i < refTypes.Length; i++) { if (cls[i] == null) this.AddReference(new ArgClass(refTypes[i])); else this.AddReference(cls[i]); } }
public void UseListClass() { SetLog("-- ↓ --"); //★App.config化により不要 StartService(); try { // サービスメソッドの呼び出し. // List<RetClass> UseListClass(List<ArgClass> argClass); //★App.config化により変更 var argClasss = new List<ArgClass>() { var argClasss = new ArgClass[] { new ArgClass(123, "abc"), new ArgClass(456, "DEF"), new ArgClass(789, "Ghi"), new ArgClass(101112, "JkL"), }; //★App.config化により追記 using (var client = new ServiceClient()) { //★App.config化により変更 var result = _service.UseListClass(argClasss); //★App.config化によりList使えない var result = client.UseListClass(argClasss); var result = client.UseListClass(argClasss); result.ToList().ForEach(r => SetLog(r.Code.ToString() + "/" + r.Name)); } } catch (CommunicationException ex) { // エラー発生 // // WCFでは、サービスとクライアント間の通信中にエラーが発生した場合 // CommunicationExceptionがスローされる。 MessageBox.Show(ex.Message); SetLog(ex.Message); } SetLog("-- ↑ --"); }
//Setters public void AddReference(ArgClass o) { //var l = this._argRefs; //Get Static References if (o.Parent != null) { var p = this.GetReference(o.Parent); if ((from ArgClass la in o.Parent.SubRefs where la.FullName == o.FullName select la).Count<ArgClass>() > 0 || this._argRefs.Contains(o)) return; o.Parent.AddSubArg(o); return; } if ((from ArgClass la in this._argRefs where la.FullName == o.FullName select la).Count<ArgClass>() == 0 && !this._argRefs.Contains(o)) this._argRefs.Add(o); }
public RetClass UseClass(ArgClass argClass) { return(new RetClass( code: argClass.Price * 2, name: $"[kind-{argClass.Kind}]")); }
//Getters public ArgClass GetReference(ArgClass r) { string[] chain = r.FullDotName.Split('.'); var a = (from ArgClass x in this._argRefs where r.FullName == x.FullName select x).ToList<ArgClass>(); if (a.Count == 1 && chain.Length == 1) return a[0]; if (a.Count > 0 || chain.Length == 0) throw new NotImplementedException(); var cr = this._argRefs; ArgClass ca = null; var rv = new List<ArgClass>(); for (int i = 0; i < chain.Length; i++) { var lca = (from ArgClass x in cr where chain[i] == x.ArgName || chain[i] == "" + x.Prefix select x).ToList<ArgClass>(); if (lca.Count != 1) return null; cr = lca[0].SubRefs; ca = lca[0]; } return ca; }
public void AddReferences(ArgClass[] o) { for (int i = 0; i < o.Length; i++) this.AddReference(o[i]); }
public Reference(ArgClass par, string[] dotHierarchy, string name, string dblprfx, string sfx) : base(par, par._prefix) { this._argName = name; this._dotHierarchy = dotHierarchy; this._dblPrefix = dblprfx; this._suffix = sfx; if (sfx != null) { this._conParams = sfx.Substring(1, sfx.Length - 2).Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in this._conParams) s.Trim(); } var k = par._funcs.Keys.ToArray(); for (int i = 0; i < k.Length; i++) this._funcs.Add(k[i], par._funcs[k[i]]); return; }
public void GetObjectFunction(ArgClass caller, List<ArgClass> chain, out ArgClass refArg, out ArgClass funcArg) { //find final object refArg = null; funcArg = null; int i = 0; while (i < chain.Count) { if (refArg != null && !(refArg is Reference)) break; refArg = chain[i]; if (refArg is Reference) i++; else break; } if (refArg == null) refArg = caller; funcArg = refArg; while (i < chain.Count) { funcArg = chain[i]; if (!(funcArg is Reference) || funcArg == null) i++; else break; } }
//SubCreators public virtual Reference CreateNewReference(ArgClass par, string[] dotHierarchy, string name, string dblprfx, string sfx) { return new Reference(par, dotHierarchy, name, dblprfx, sfx); }
//Setters public void AddSubArg(ArgClass r) { if (!this._subRefs.Contains(r) && (from ArgClass a in this._subRefs where a.FullName == r.FullName select a).ToList<ArgClass>().Count == 0) this._subRefs.Add(r); }
public ArgClass(ArgClass p, char? prfx) { this._parRef = p; this._prefix = prfx; //if (prfx.HasValue) // this._argName = "" + prfx.Value; }