Пример #1
0
        static string GenerateCustomPlacement(PlacementAttribute placement)
        {
            var properties = placement.GetType()
                             .GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)
                             .Where(x => x.CanRead);

            var setters = properties.Select(x => new { Property = x, Setter = GenerateAttributePropertySetter(x, placement) })
                          .Where(x => x.Setter != null)
                          .Select(x => $"{char.ToLowerInvariant(x.Property.Name[0]) + x.Property.Name.Substring(1)}:{x.Setter}")
                          .ToList();

            return("global::" + placement.GetType().FullName + $"({string.Join(",", setters)})");
        }
Пример #2
0
        static string GetActorPlacement(PlacementAttribute placement)
        {
            switch (placement)
            {
            case RandomPlacementAttribute rand: return(typeof(RandomPlacementAttribute).Name);

            case PreferLocalPlacementAttribute local: return(typeof(PreferLocalPlacementAttribute).Name);

            case ActivationCountBasedPlacementAttribute count: return(typeof(ActivationCountBasedPlacementAttribute).Name);

            case HashBasedPlacementAttribute hash: return(typeof(HashBasedPlacementAttribute).Name);

            default: return(GenerateCustomPlacement(placement));
            }
        }