Beispiel #1
0
        public override T GetProperty <T>(BindingContext context)
        {
            if (context == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
            }

            if (typeof(T) == typeof(ChannelProtectionRequirements) && this.ProtectionLevel != ProtectionLevel.None)
            {
                ChannelProtectionRequirements innerRequirements = context.GetInnerProperty <ChannelProtectionRequirements>();
                if (innerRequirements == null)
                {
                    return((T)(object)ContextMessageHeader.GetChannelProtectionRequirements(this.ProtectionLevel));
                }
                else
                {
                    ChannelProtectionRequirements requirements = new ChannelProtectionRequirements(innerRequirements);
                    requirements.Add(ContextMessageHeader.GetChannelProtectionRequirements(this.ProtectionLevel));
                    return((T)(object)requirements);
                }
            }
            else if (typeof(T) == typeof(IContextSessionProvider))
            {
                return((T)(object)this);
            }
            else if (typeof(T) == typeof(IContextBindingElement))
            {
                return((T)(object)this);
            }
            else if (typeof(T) == typeof(ICorrelationDataSource))
            {
                ICorrelationDataSource correlationData = instanceCorrelationData;

                if (correlationData == null)
                {
                    ICorrelationDataSource innerCorrelationData = context.GetInnerProperty <ICorrelationDataSource>();
                    correlationData         = CorrelationDataSourceHelper.Combine(innerCorrelationData, ContextExchangeCorrelationDataDescription.DataSource);
                    instanceCorrelationData = correlationData;
                }

                return((T)(object)correlationData);
            }

            return(context.GetInnerProperty <T>());
        }
Beispiel #2
0
        public override T GetProperty <T>(BindingContext context) where T : class
        {
            if (context == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
            }
            if ((typeof(T) == typeof(ChannelProtectionRequirements)) && (this.ProtectionLevel != System.Net.Security.ProtectionLevel.None))
            {
                ChannelProtectionRequirements innerProperty = context.GetInnerProperty <ChannelProtectionRequirements>();
                if (innerProperty == null)
                {
                    return((T)ContextMessageHeader.GetChannelProtectionRequirements(this.ProtectionLevel));
                }
                ChannelProtectionRequirements requirements2 = new ChannelProtectionRequirements(innerProperty);
                requirements2.Add(ContextMessageHeader.GetChannelProtectionRequirements(this.ProtectionLevel));
                return((T)requirements2);
            }
            if (typeof(T) == typeof(IContextSessionProvider))
            {
                return((T)this);
            }
            if (typeof(T) == typeof(IContextBindingElement))
            {
                return((T)this);
            }
            if (!(typeof(T) == typeof(ICorrelationDataSource)))
            {
                return(context.GetInnerProperty <T>());
            }
            ICorrelationDataSource instanceCorrelationData = this.instanceCorrelationData;

            if (instanceCorrelationData == null)
            {
                instanceCorrelationData      = CorrelationDataSourceHelper.Combine(context.GetInnerProperty <ICorrelationDataSource>(), ContextExchangeCorrelationDataDescription.DataSource);
                this.instanceCorrelationData = instanceCorrelationData;
            }
            return((T)instanceCorrelationData);
        }