Example #1
0
        public FieldConfigurator MarkAvailable <TManifest>(string label, AvailabilityType availabilityType, bool suppressFieldDiscovery = false)
            where TManifest : Manifest
        {
            EnsureAvailableDataCrate();

            var manifestType = ManifestDiscovery.Default.GetManifestType <TManifest>();
            var fields       = new List <FieldDTO>();

            if (!suppressFieldDiscovery)
            {
                var members = Fr8ReflectionHelper.GetMembers(typeof(TManifest))
                              .Where(x => Fr8ReflectionHelper.IsPrimitiveType(x.MemberType))
                              .Where(x => Fr8ReflectionHelper.CheckAttributeOrTrue <ManifestFieldAttribute>(x, y => !y.IsHidden));

                foreach (var memberAccessor in members)
                {
                    fields.Add(new FieldDTO(memberAccessor.Name, AvailabilityType.RunTime)
                    {
                        SourceCrateLabel    = label,
                        SourceCrateManifest = manifestType
                    });
                }
            }

            _availableData.AddOrUpdate(new CrateDescriptionDTO
            {
                Label        = label,
                ManifestId   = manifestType.Id,
                ManifestType = manifestType.Type,
                ProducedBy   = _owner,
                Fields       = fields
            });

            return(new FieldConfigurator(fields, label, manifestType, _sourceActivityId, availabilityType));
        }
        public FieldConfigurator MarkAvailable(CrateManifestType manifestType, string label, AvailabilityType availabilityType)
        {
            EnsureAvailableDataCrate();

            var fields = new List <FieldDTO>();

            _availableData.AddOrUpdate(new CrateDescriptionDTO
            {
                Availability     = availabilityType,
                Label            = label,
                ManifestId       = manifestType.Id,
                ManifestType     = manifestType.Type,
                ProducedBy       = _owner,
                SourceActivityId = _sourceActivityId.ToString(),
                Fields           = fields
            });

            return(new FieldConfigurator(fields));
        }