コード例 #1
0
        private static FlagBitmask FlagsDescriptor(int bitSize, params string[] flagNames)
        {
            var dt = new FlagBitmask(typeof(FlagField));
            var ff = new FlagField(bitSize, flagNames, dt);

            return(dt.DFD_FromComponent(ff));
        }
コード例 #2
0
    public virtual FlagBitmask DFD_FromComponent(object component)
    {
        if (component == null)
        {
            throw new ArgumentNullException("component");
        }

        if (!_type.IsAssignableFrom(component.GetType()))
        {
            throw new ArgumentException(null, "component");
        }

        FlagBitmask desc = new FlagBitmask((IndustrialPark.FlagField)component);

        desc._type     = _type;
        desc.Component = component;

        // shallow copy on purpose
        desc._typeConverter     = _typeConverter;
        desc._editors           = _editors;
        desc._defaultEvent      = _defaultEvent;
        desc._defaultProperty   = _defaultProperty;
        desc._attributes        = _attributes;
        desc._events            = _events;
        desc.OriginalProperties = OriginalProperties;

        // track values
        List <PropertyDescriptor> properties = new List <PropertyDescriptor>();

        foreach (PropertyDescriptor pd in Properties)
        {
            DynamicProperty ap = new DynamicProperty(desc, pd, component);
            properties.Add(ap);
        }

        desc.Properties = new PropertyDescriptorCollection(properties.ToArray());
        return(desc);
    }