public string GetTargetString() { FieldInfo[] fieldInfos = GetFragmentFieldInfo(); var fieldInfoValues = fieldInfos.Select(f => f.GetValue(this)); var nonZeroValues = fieldInfoValues.Where(f => ((int)f) != 0); string result = string.Join( "_", nonZeroValues.Select(f => s_cachedFieldValueToString.GetOrAdd(f, value => { if (value is Platform) { var platform = (Platform)value; if (platform >= Platform._reserved9) { return(Util.GetPlatformString(platform, null, this).ToLower()); } } return(value.ToString()); })) ); return(result); }