private void AddSymbolOnceField(string symbol) { List <string> onceFields = new List <string>(); Type typeOfYwField = typeof(YwField); string[] enumNames = Enum.GetNames(typeof(YwField)); foreach (var n in enumNames) { YwField ft; if (Enum.TryParse <YwField>(n, out ft)) { YwFieldGroup group = GetAttributeEnumOfYwField(ft); if ((group & YwFieldGroup.Once) == YwFieldGroup.Once) { onceFields.Add(n); } } } this._symbolOnceFields.Add(symbol, onceFields); }
//private YwFieldGroup GetAttributeEnumOfYwField(string field) //{ // var enumMember = field.GetType().GetMember(field).FirstOrDefault(); // if (enumMember == null) // { return YwFieldGroup.NotSpecific; } // var categoryAttr = // enumMember == null // ? default(FieldCategoryAttribute) // : enumMember.GetCustomAttribute(typeof(FieldCategoryAttribute)) as FieldCategoryAttribute; // return categoryAttr.Group; //} private bool IsRefreshRequire(ChangeData notify) { YwFieldGroup fg = GetAttributeEnumOfYwField(notify.Topic.YwFieldType); if ((fg & YwFieldGroup.Once) == YwFieldGroup.Once) { List <string> fields = null; if (this._symbolOnceFields.TryGetValue(notify.Topic.Symbol, out fields) == false) { return(false); } if (fields.Count == 0) { return(false); } bool removed = fields.Remove(notify.Topic.FieldName); //Console.WriteLine("{0} removed {1} = {2}", notify.Topic.Symbol, fields, removed); return(removed); } return(true); }
public FieldCategoryAttribute(YwFieldGroup group) { this.Group = group; }