public CustomEffectFactory(Type effectType, Func <ID2D1EffectImpl> createID2D1EffectImplFunc)
        {
            _effectType = effectType;
            _createID2D1EffectImplFunc = createID2D1EffectImplFunc;

            _createEffect = new CreateCustomEffectDelegate(CreateCustomEffectImpl);
            Callback      = new FunctionCallback(Marshal.GetFunctionPointerForDelegate(_createEffect));

            _propertyNatives = GetPropertyNatives().ToArray();
        }
        public CustomEffectFactory(CustomEffectFactoryDelegate factory, Type customEffectType)
        {
            this.customEffectType = customEffectType;

            // Gets the guid of this class
            Guid = Utilities.GetGuidFromType(customEffectType);

            unsafe
            {
                Factory = factory;
                callback = new CreateCustomEffectDelegate(CreateCustomEffectImpl);
                NativePointer = Marshal.GetFunctionPointerForDelegate(callback);
            }

            InitializeBindings();
            InitializeXml();
        }
        public CustomEffectFactory(CustomEffectFactoryDelegate factory, Type customEffectType, Guid effectId)
        {
            this.customEffectType = customEffectType;

            // Gets the guid of this class
            Guid = effectId;

            unsafe
            {
                Factory       = factory;
                callback      = new CreateCustomEffectDelegate(CreateCustomEffectImpl);
                NativePointer = Marshal.GetFunctionPointerForDelegate(callback);
            }

            InitializeBindings();
            InitializeXml();
        }