public ActivityData(
     string id, string html = null, string text = null, StyleElement parsedText = null, bool? isEditable = null, Uri postUrl = null,
     int? commentLength = null, CommentData[] comments = null,
     DateTime? postDate = null,
     DateTime? editDate = null,
     ServiceType serviceType = null, PostStatusType? status = null, IAttachable attachedContent = null,
     ProfileData owner = null, DateTime? getActivityDate = null,
     ActivityUpdateApiFlag updaterTypes = ActivityUpdateApiFlag.Unloaded)
 {
     LoadedApiTypes = updaterTypes;
     Id = id;
     IsEditable = isEditable;
     Html = html;
     Text = text;
     ParsedText = parsedText;
     CommentLength = commentLength;
     Comments = comments;
     PostUrl = postUrl;
     PostDate = postDate;
     EditDate = editDate;
     GetActivityDate = getActivityDate;
     PostStatus = status;
     Owner = owner;
     AttachedContent = attachedContent;
     ServiceType = serviceType;
 }
 public Task UpdateGetActivityAsync(bool isForced, ActivityUpdateApiFlag updaterTypes)
 {
     var cache = Client.Activity.InternalGetActivityCache(_data.Id);
     return cache.SyncerUpdateActivity.LockAsync(
         isForced, () => _data.PostStatus != PostStatusType.Removed && (LoadedApiTypes & updaterTypes) != updaterTypes,
         async () =>
         {
             try
             {
                 var nwData = Client.Activity.InternalUpdateActivity(await Client.ServiceApi.GetActivityAsync(Id, Client));
                 if (_data.Comments != null)
                 {
                     var nwComments = from newComments in nwData.Comments
                                      join oldComments in _data.Comments on newComments.CommentId equals oldComments.CommentId into c
                                      from d in c.DefaultIfEmpty()
                                      where d == null
                                      select newComments;
                     var rmComments = from oldComments in _data.Comments
                                      join newComments in nwData.Comments on oldComments.CommentId equals newComments.CommentId into c
                                      from d in c.DefaultIfEmpty()
                                      where d == null
                                      select new CommentData(
                                          oldComments.CommentId, oldComments.ActivityId, oldComments.Html,
                                          oldComments.PostDate, oldComments.EditDate, oldComments.Owner,
                                          PostStatusType.Removed);
                     foreach (var item in nwComments.Concat(rmComments))
                         Client.Activity.InternalSendObjectToStream(item);
                 }
                 else
                     foreach (var item in nwData.Comments)
                         Client.Activity.InternalSendObjectToStream(item);
                 _data = nwData;
                 _postUser = Client.People.InternalGetAndUpdateProfile(_data.Owner);
                 _attachedContent = _data.AttachedContent != null ? AttachedContentDecorator(_data.AttachedContent, Client) : null;
                 _comments = _data.Comments.Select(dt => new CommentInfo(Client, dt, _data, this)).ToArray();
             }
             catch (ApiErrorException e)
             {
                 if (e.InnerException is System.Net.WebException
                     && ((System.Net.WebException)e.InnerException).Status == System.Net.WebExceptionStatus.UnknownError)
                     Client.Activity.InternalUpdateActivity(new ActivityData(Id, status: PostStatusType.Removed, updaterTypes: ActivityUpdateApiFlag.GetActivity));
                 else
                     throw new FailToOperationException<ActivityInfo>("UpdateGetActivityAsync()に失敗しました。", this, e);
             }
         },
         () =>
         {
             _data = cache.Value;
             _postUser = Client.People.InternalGetAndUpdateProfile(_data.Owner);
             _attachedContent = _data.AttachedContent != null ? AttachedContentDecorator(_data.AttachedContent, Client) : null;
             if (_data.Comments != null)
                 _comments = _data.Comments.Select(dt => new CommentInfo(Client, dt, _data, this)).ToArray();
         });
 }
 ActivityData GenerateActivityData(int id, ActivityUpdateApiFlag flagMode, int[] commentIds, string marking)
 {
     return StubGenerator.GenerateData<ActivityData>(marking, new
     {
         GenerateData_Id = id,
         LoadedApiTypes = StubGenerator.GenerateSetter(flagMode),
         Comments = commentIds.Select(cid => new
         {
             GenerateData_Id = cid,
             ActivityId = StubGenerator.GenerateSetter(string.Format("Id{0:00}", id)),
         }),
     });
 }