public PropInfo MakeList(ITypeNameResolver resolver) { var type = resolver.GetTypeName <IList <int> >().Split('<').First(); var init = resolver.GetTypeName <List <int> >().Split('<').First(); PropertyInit = $"new {init}<{ElementType}>()"; PropertyType = $"{type}<{ElementType}>"; return(this); }
public PropInfo MakeDict(ITypeNameResolver resolver) { var type = resolver.GetTypeName <IDictionary <int, int> >().Split('<').First(); var init = resolver.GetTypeName <Dictionary <int, int> >().Split('<').First(); PropertyInit = $"new {init}<string, {ElementType}>()"; PropertyType = $"{type}<string, {ElementType}>"; return(this); }
public PropInfo GetPropertyTypeName(OptionValueProcessorKind kind, ITypeNameResolver res, NamespaceAndName enumTypeName) { var v = ValueType.FixedType; string elementName; if (v != null) { switch (kind) { case OptionValueProcessorKind.List: case OptionValueProcessorKind.Dictionary: elementName = res.GetTypeName(v); break; case OptionValueProcessorKind.SingleValue: if (v.IsValueType) { v = typeof(Nullable <>).MakeGenericType(v); } elementName = res.GetTypeName(v); break; default: throw new ArgumentOutOfRangeException(nameof(kind), kind, null); } } else { var suffix = kind == OptionValueProcessorKind.SingleValue ? "?" : ";"; elementName = res.GetTypeName(enumTypeName) + suffix; } var tqq = new PropInfo(elementName); switch (kind) { case OptionValueProcessorKind.Dictionary: return(tqq.MakeDict(res)); case OptionValueProcessorKind.SingleValue: return(tqq); case OptionValueProcessorKind.List: return(tqq.MakeList(res)); default: throw new ArgumentOutOfRangeException(nameof(kind), kind, null); } }
public static void AddAggressiveInlining(this ICsClassMember csMethod, ITypeNameResolver cl) { var atr = CsAttribute.Make <MethodImplAttribute>(cl) .WithArgumentCode(cl.GetTypeName <MethodImplOptions>() + "." + MethodImplOptions.AggressiveInlining); csMethod.Attributes.Add(atr); }
public EventCriteria BuildCriteria(ITypeNameResolver typeNameResolver) { var filters = new List <FilterDefinition <RecordedEvent> >(); IEnumerable <string> eventNames = _eventTypes .Select(t => typeNameResolver.GetTypeName(t)) .ToArray(); if (_streamIDs.Any()) { filters.Add(Builders <RecordedEvent> .Filter.In("Event._t", eventNames)); } if (_eventTypes.Any()) { filters.Add(Builders <RecordedEvent> .Filter.In(x => x.StreamID, _streamIDs)); } FilterDefinition <RecordedEvent> filter = filters.Count switch { 0 => Builders <RecordedEvent> .Filter.Empty, 1 => filters.Single(), _ => Builders <RecordedEvent> .Filter.And(filters) }; return(new EventCriteria(filter)); } }
protected static string MakeGenericType <TGenericType>(ITypeNameResolver reslve, string arg) { var tn = reslve.GetTypeName <TGenericType>(); var parts = tn.Split('<'); return(parts[0] + "<" + arg + ">"); }
public void AddFlagsAttribute(ITypeNameResolver resolver) { _target.WithAttribute(new CsAttribute(resolver.GetTypeName <FlagsAttribute>())); }
public string Throw <T>(ITypeNameResolver resolver) { var exc = Create(resolver.GetTypeName <T>()); return($"throw {exc};"); }
public string Create <T>(ITypeNameResolver resolver) { return(Create(resolver.GetTypeName <T>())); }