public ConverterInfo(TransferableValueToOriginalValueConverter transferableValueToOriginalValueConverter, OriginalValueToTransferableValueConverter originalValueToTransferableValueConverter, Type TransferableValueType)
 {
     this.transferableValueToOriginalValueConverter = transferableValueToOriginalValueConverter;
     this.originalValueToTransferableValueConverter = originalValueToTransferableValueConverter;
     this.TransferableValueType = TransferableValueType;
 }
Example #2
0
        public ParameterValue(IParameter Parameter, object Value, Type TransferableType, OriginalValueToTransferableValueConverter originalValueToTransferableValueConverter, TransferableValueToOriginalValueConverter transferableValueToOriginalValueConverter, bool AllowNullTransferableValues = false)
        {
            if (Parameter == null)
            {
                throw new ArgumentNullException(nameof(Parameter));
            }

            if (TransferableType == null)
            {
                throw new ArgumentNullException(nameof(TransferableType));
            }

            if (originalValueToTransferableValueConverter == null)
            {
                throw new ArgumentNullException(nameof(originalValueToTransferableValueConverter));
            }

            if (transferableValueToOriginalValueConverter == null)
            {
                throw new ArgumentNullException(nameof(transferableValueToOriginalValueConverter));
            }

            if ((!originalValueToTransferableValueConverter.Target?.GetType()?.IsSerializable) ?? false)
            {
                throw new ArgumentException("The converter's target type must be serializable in order to use it accross AppDomains. This error often occurs if you reference any out-of-scope variables in your delegate, if its declaring type is not serializable.", nameof(originalValueToTransferableValueConverter));
            }

            if ((!transferableValueToOriginalValueConverter.Target?.GetType()?.IsSerializable) ?? false)
            {
                throw new ArgumentException("The converter's target type must be serializable in order to use it accross AppDomains. This error often occurs if you reference any out-of-scope variables in your delegate, if its declaring type is not serializable.", nameof(transferableValueToOriginalValueConverter));
            }

            this.Value = Value;
            this.TransferableValueType       = TransferableType;
            this.AllowNullTransferableValues = AllowNullTransferableValues;
            this.Parameter = Parameter;
            this.Converter = transferableValueToOriginalValueConverter;
            this.TransferableValueGetter = new Lazy <object>(() => originalValueToTransferableValueConverter(this.Value));
        }