public override IEnumerable <LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) { var part = workflowContext.Content.As <WXMsgPart>(); var contentId = activityContext.GetState <int>("contentId"); var contentItem = _contentManager.Get(contentId); switch (contentItem.TypeDefinition.Name) { case "WXImageMsg": Process(() => ((dynamic)contentItem).WXImageMsg.WXMsgImageMediaIdField.Value , () => ((dynamic)contentItem).WXImageMsg.WXMsgImageField.MediaParts[0] , () => ((dynamic)contentItem).WXImageMsg.WXMsgImageMediaCreateAtField.Value , (val) => ((dynamic)contentItem).WXImageMsg.WXMsgImageMediaIdField.Value = val , (val) => ((dynamic)contentItem).WXImageMsg.WXMsgImageMediaCreateAtField.Value = val.ToString() , "image"); break; case "WXMusicMsg": Process(() => ((dynamic)contentItem).WXMusicMsg.WXMsgMusicThumbMediaIdField.Value , () => ((dynamic)contentItem).WXMusicMsg.WXMsgMusicThumbField.MediaParts[0] , () => ((dynamic)contentItem).WXMusicMsg.WXMsgMusicThumbMediaCreateAtField.Value , (val) => ((dynamic)contentItem).WXMusicMsg.WXMsgMusicThumbMediaIdField.Value = val , (val) => ((dynamic)contentItem).WXMusicMsg.WXMsgMusicThumbMediaCreateAtField.Value = val.ToString() , "thumb"); break; case "WXVideoMsg": Process(() => ((dynamic)contentItem).WXVideoMsg.WXMsgVideoMediaIdField.Value , () => ((dynamic)contentItem).WXVideoMsg.WXMsgVideoField.MediaParts[0] , () => ((dynamic)contentItem).WXVideoMsg.WXMsgVideoMediaCreateAtField.Value , (val) => ((dynamic)contentItem).WXVideoMsg.WXMsgVideoMediaIdField.Value = val , (val) => ((dynamic)contentItem).WXVideoMsg.WXMsgVideoMediaCreateAtField.Value = val.ToString() , "video"); break; case "WXVoiceMsg": Process(() => ((dynamic)contentItem).WXVoiceMsg.WXMsgVoiceMediaIdField.Value , () => ((dynamic)contentItem).WXVoiceMsg.WXMsgVoiceField.MediaParts[0] , () => ((dynamic)contentItem).WXVoiceMsg.WXMsgVoiceMediaCreateAtField.Value , (val) => ((dynamic)contentItem).WXVoiceMsg.WXMsgVoiceMediaIdField.Value = val , (val) => ((dynamic)contentItem).WXVoiceMsg.WXMsgVoiceMediaCreateAtField.Value = val.ToString() , "voice"); break; } _weiXinResp.Add(new Tuple <ContentItem, string>(contentItem, part.FromUserName)); yield return(T("Done")); }