public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType, Encoding encoding = null) { if (securityId.IsDefault() && typeof(TData) != typeof(NewsMessage)) { throw new ArgumentNullException("securityId"); } SecurityId = securityId; _executionType = executionType; _encoding = encoding ?? Encoding.UTF8; if (typeof(TData) == typeof(QuoteChangeMessage)) { return; } _format = GetFormat(executionType).Put(_timeFormat); var timeFormat = ":" + _timeFormat; if (_isLevel1) { return; } _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key => _format .Split(';') .Select(s => MemberProxy.Create(typeof(TData), s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty))) .ToArray()); }
private void Load() { if (!File.Exists(_file)) { return; } var proxySet = _format .Split(';') .Select(s => MemberProxy.Create(typeof(Security), s.Substring(1, s.Length - 2))) .ToArray(); CultureInfo.InvariantCulture.DoInCulture(() => { foreach (var line in File.ReadAllLines(_file)) { var security = new Security(); var cells = line.Split(';'); for (var i = 0; i < proxySet.Length; i++) { proxySet[i].SetValue(security, cells[i].To(proxySet[i].ReturnType)); } var id = security.Id.ToSecurityId(); security.Code = id.SecurityCode; security.Board = _parent.ExchangeInfoProvider.GetOrCreateBoard(id.BoardCode); _securities.Add(security); } }); }
public MemberProxy <T> Of(object subject) { MemberProxy <T> cloned = (MemberProxy <T>)MemberwiseClone(); cloned.subject = subject; return(cloned); }
public string GetFieldSummary(MemberProxy field) { if (field == null) { throw new ArgumentNullException("field"); } return(GetSummary(field.DeclaringType, GetFieldXPath(field))); }
/** * * Param: parent The document level context for this override. * Param: target The component level context for this override. */ /// <summary> /// Gets the targeted member based on the folowing logic: /// If target is supplied - as object - get its member using name /// If target is supplied - as string - find a target (object) and then get its member using name /// If target is not supplied - get the member on parent using name /// </summary> /// <param name="target"></param> /// <param name="parent"></param> /// <param name="name"></param> /// <returns></returns> protected MemberProxy GetMember(object target, Component parent, string name) { if (target == null) { return(new MemberProxy(parent, name)); } if (target is string) { target = new MemberProxy(parent, (string)target).GetValue(); } return(new MemberProxy(target, name)); }
/// <summary> /// /// </summary> /// <param name="parent"></param> public override void Apply(Component parent) { //Debug.Log("SetProperty->Apply: Name: " + Name + "; Value: " + Value); _appliedTarget = GetTarget(Target, parent); _pseudonym = GetPseudonym(_appliedTarget, Name); _mp = new MemberProxy(_appliedTarget, _pseudonym); //_mp = GetMember(Target, parent, _pseudonym); if (!Applied) { _oldValue = _mp.GetValue(); } _mp.SetValue(Value); // buggy caching (tries to do Color to Rotation) //MemberWrapper mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym); /*MemberWrapper mw = GlobalMemberCache.Instance.Get(_appliedTarget.GetType(), _pseudonym); * if (null == mw) { * mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym); * GlobalMemberCache.Instance.Put(_appliedTarget.GetType(), _pseudonym, mw); * } * if (!Applied) * { * _oldValue = mw.GetValue(_appliedTarget); * } * mw.SetValue(_appliedTarget, Value);*/ _relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym); if (_relatedProps.Count > 0) { if (null == _oldRelatedValues) { _oldRelatedValues = new List <object>(); // lazily } else { _oldRelatedValues.Clear(); } foreach (string property in _relatedProps) { _oldRelatedValues.Add(new MemberProxy(_appliedTarget, property).GetValue()); } } Applied = true; }
/// <summary> /// Initializes a new instance of the <see cref="CsvMarketDataSerializer{T}"/>. /// </summary> /// <param name="securityId">Security ID.</param> /// <param name="executionType">The type of execution.</param> /// <param name="candleArg">Candle arg.</param> /// <param name="encoding">Encoding.</param> public CsvMarketDataSerializer(SecurityId securityId, ExecutionTypes?executionType = null, object candleArg = null, Encoding encoding = null) { if (securityId.IsDefault() && !_isNews) { throw new ArgumentNullException(nameof(securityId)); } SecurityId = securityId; _executionType = executionType; _candleArg = candleArg; _encoding = encoding ?? _utf; if (_isQuotes) { return; } _format = GetFormat(executionType).Replace(":{0}", ".UtcDateTime:" + _timeFormat); if (_isLevel1) { return; } const string timeFormat = ":" + _timeFormat; _members = _info.SafeAdd(Tuple.Create(typeof(TData), executionType), key => _format .Split(';') .Skip(_skipColumns) .Select(s => MemberProxy.Create(typeof(TData), s.Substring(1, s.Length - 2).Replace(timeFormat, string.Empty))) .Concat(_isNews ? new[] { MemberProxy.Create(typeof(TData), "SecurityId") } : Enumerable.Empty <MemberProxy>()) .ToArray()); if (typeof(TData) == typeof(ExecutionMessage)) { switch (executionType) { case ExecutionTypes.Tick: case ExecutionTypes.OrderLog: _toId = lines => lines[_skipColumns].To <long>(); break; } } }
// ReSharper restore StaticFieldInGenericType static CsvMarketDataSerializer() { _timeFormat = GetTimeFormat(); if (typeof(TData) == typeof(ExecutionMessage) || typeof(TData).IsSubclassOf(typeof(CandleMessage))) { _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId"); } if (typeof(TData) == typeof(ExecutionMessage)) { _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType"); } _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>()); _dateMember = MemberProxy.Create(typeof(TData), typeof(TData).IsSubclassOf(typeof(CandleMessage)) ? "OpenTime" : "ServerTime"); }
/// <summary> /// /// </summary> /// <param name="parent"></param> public override void Remove(Component parent) { //Debug.Log("SetStyle->Remove: Name: " + Name + "; Value: " + Value); var obj = (IStyleClient)_appliedTarget; // ovo je fakat čudno, njihova logika ne radi (ili ima bug) // što znači "clearate" style - maknut ga iz style deklaracije ili ga staviti unutra s vrijednosti "undefined"??? if (_wasInline) { // Restore the old value /*if (_oldValue == null) * obj.ClearStyle(Name); * else*/ obj.SetStyle(Name, _oldValue); // apply whatever the old value is } else { obj.ClearStyle(Name); } //obj.SetStyle(Name, _oldValue); //_relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym); if (null != _relatedProps) { for (var i = 0; i < _relatedProps.Count; i++) { _mp = new MemberProxy(_appliedTarget, _relatedProps[i]); _mp.SetValue(_oldRelatedValues[i]); } } Applied = false; _appliedTarget = null; }
// ReSharper restore StaticFieldInGenericType static CsvMarketDataSerializer() { var isCandles = typeof(TData).IsCandleMessage(); if (typeof(TData) == typeof(ExecutionMessage) || isCandles) { _setSecurityId = MemberProxy.Create(typeof(TData), "SecurityId"); } if (typeof(TData) == typeof(ExecutionMessage)) { _setExecutionType = MemberProxy.Create(typeof(TData), "ExecutionType"); } if (isCandles) { _setCandleArg = MemberProxy.Create(typeof(TData), "Arg"); } _ctor = FastInvoker <VoidType, VoidType, TData> .Create(typeof(TData).GetMember <ConstructorInfo>()); _dateMember = MemberProxy.Create(typeof(TData), isCandles ? "OpenTime" : "ServerTime"); }
/// <summary> /// /// </summary> /// <param name="parent"></param> public override void Remove(Component parent) { //Debug.Log("SetProperty->Remove: Name: " + Name + "; Value: " + Value); //_appliedTarget = GetTarget(_appliedTarget, parent); _pseudonym = GetPseudonym(_appliedTarget, Name); // Special case for width and height. Restore the "width" and // "height" properties instead of explicitWidth/explicitHeight // so they can be kept in sync. if ((Name == "Width" || Name == "Height") && null != (_oldValue as float?)) { _pseudonym = Name; } _mp = new MemberProxy(_appliedTarget, _pseudonym); // buggy caching (tries to do Color to Rotation) _mp.SetValue(_oldValue); /*MemberWrapper mw = new MemberWrapper(_appliedTarget.GetType(), _pseudonym); * mw.SetValue(_appliedTarget, _oldValue);*/ _oldValue = null; //_relatedProps = GetRelatedProperties(_appliedTarget, _pseudonym); if (null != _relatedProps) { for (var i = 0; i < _relatedProps.Count; i++) { _mp = new MemberProxy(_appliedTarget, _relatedProps[i]); _mp.SetValue(_oldRelatedValues[i]); } } Applied = false; _appliedTarget = null; }
private static string GetFieldXPath(MemberProxy field) { return(String.Format(CultureInfo.InvariantCulture, "/doc/members/member[@name = 'F:{0}.{1}']", field.DeclaringType.FullName, field.Name)); }