Example #1
0
        /// <summary>
        /// Create instances of SampleClassificationObjectType, adding them to the private objects collection.
        /// </summary>
        /// <param name="entry"></param>
        private void ProcessResourceEntry(SampleResourceEntry entry)
        {
            // Create Property provider by matching property adapters with data sources
            // PropertyProvider is called by ResourceStaticAnalysis when code attempts to retrieve a property that has not yet been created
            var pp = new PropertyProvider();

            // Add a pair: property adapter and an object that serves as source
            foreach (var adapter in resourceFilePropertyAdapters)
            {
                pp.AddPropertyAdapterDataSourcePair(adapter, entry);
            }
            // Initialize an instance of SampleClassificationObjectType using the PropertyProvider built above
            var obj = new SampleClassificationObjectType(pp);

            foreach (var adapter in selfPropertyAdapters)
            {
                // Now, add one more poperty adapter that uses the SampleClassificationObjectType object itself as data source
                // this one builds properties from existing properties.
                pp.AddPropertyAdapterDataSourcePair(adapter, obj);
            }

            // This reduces amount of memory used by object by compacting internal representation.
            pp.Compact();
            // Add to the list of all objects being constructed by this adapter.
            objects.Add(obj);
        }
Example #2
0
        private static Property GetSelfProperty(SampleClassificationObjectType.SupportedProperties propertyId, SampleClassificationObjectType cO)
        {
            if (Object.ReferenceEquals(cO, null))
            {
                throw new NullReferenceException(String.Format(CultureInfo.CurrentCulture, "DataSource must not be null. DataSource name: {0}", cO.GetType().Name));
            }
            switch (propertyId)
            {
            case SampleClassificationObjectType.SupportedProperties.Comments: return(new StringProperty((byte)propertyId, cO.Comments));

            case SampleClassificationObjectType.SupportedProperties.ResourceId: return(new StringProperty((byte)propertyId, cO.ResourceId));

            case SampleClassificationObjectType.SupportedProperties.SourceString: return(new StringProperty((byte)propertyId, cO.SourceString));

            default:
            {
                string message = String.Format(CultureInfo.CurrentCulture, "Cannot provide property {0} from datasource of type {1}.", propertyId.ToString(), cO.GetType().Name);
                throw new InvalidOperationException(message);
            }
            }
        }