/// <summary> /// Reads a property in the context of the message /// </summary> /// <typeparam name="TContextProperty">Type of the target property</typeparam> /// <typeparam name="TExpected">Expected type of the value</typeparam> /// <param name="message">BizTalk pipeline message</param> /// <param name="isMandatory">Indication if it is mandatory for the property to be present</param> /// <returns>Value from the property, if present</returns> /// <exception cref="BizTalk.Extended.Core.Exceptions.ContextPropertyNotFoundException">Thrown when a mandatory property is not present</exception> public static TExpected ReadContextProperty <TContextProperty, TExpected>(this XLANGMessage message, bool isMandatory) where TContextProperty : MessageContextPropertyBase, new() { Guard.NotNull(message, "message"); object value = message.GetPropertyValue(typeof(TContextProperty)); if (value == null && isMandatory) { var propertyInstance = new TContextProperty(); throw new ContextPropertyNotFoundException(propertyInstance.Name.Name, propertyInstance.Name.Namespace); } return(ContextPropertySerializer.DeserializeFromContextPropertyValue <TExpected>(value)); }
/// <summary> /// Reads a property in the context of the message /// </summary> /// <typeparam name="TExpected">Expected type of the value</typeparam> /// <param name="message">BizTalk pipeline message</param> /// <param name="name">Name of the property</param> /// <param name="ns">Namespace of the property</param> /// <param name="isMandatory">Indication if it is mandatory for the property to be present</param> /// <returns>Value from the property, if present</returns> /// <exception cref="BizTalk.Extended.Core.Exceptions.ContextPropertyNotFoundException">Thrown when a mandatory property is not present</exception> public static TExpected ReadContextProperty <TExpected>(this IBaseMessage message, string name, string ns, bool isMandatory) { Guard.NotNull(message, "msg"); Guard.Against(message.Context == null, "msg"); Guard.NotNullOrEmpty(name, "name"); Guard.NotNullOrEmpty(ns, "ns"); object value = message.Context.Read(name, ns); if (value == null && isMandatory) { throw new ContextPropertyNotFoundException(name, ns); } return(ContextPropertySerializer.DeserializeFromContextPropertyValue <TExpected>(value)); }