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);
            }
Exemplo n.º 3
0
            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);
                }
            }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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));
        }
    }
Exemplo n.º 6
0
        protected static string MakeGenericType <TGenericType>(ITypeNameResolver reslve, string arg)
        {
            var tn    = reslve.GetTypeName <TGenericType>();
            var parts = tn.Split('<');

            return(parts[0] + "<" + arg + ">");
        }
Exemplo n.º 7
0
 public void AddFlagsAttribute(ITypeNameResolver resolver)
 {
     _target.WithAttribute(new CsAttribute(resolver.GetTypeName <FlagsAttribute>()));
 }
Exemplo n.º 8
0
        public string Throw <T>(ITypeNameResolver resolver)
        {
            var exc = Create(resolver.GetTypeName <T>());

            return($"throw {exc};");
        }
Exemplo n.º 9
0
 public string Create <T>(ITypeNameResolver resolver)
 {
     return(Create(resolver.GetTypeName <T>()));
 }