3

クラスActivityTypeのActivityType.Codeプロパティ値を返すことにより、DataContractのToStringメソッドをオーバーライドしましたが。グリッドをバインドするためにクライアントでActivityType.Codeプロパティ値をまだ取得していません。クライアントがToStringメソッドをどのように使用できるかを教えてください。

これがコードベースです

データ契約

  [DataContract]
    public class Activity
    {
        [DataMember]
        public ActivityType ActivityTypeId { get; set; }
        [DataMember]
        public string Code { get; set; }
        [DataMember]
        public string Description { get; set; }
        [DataMember]
        public EntityStatus Status { get; set; }

    }
    [DataContract]
    public enum EntityStatus
    {
        [EnumMember]
        Active = 0,
        [EnumMember]
        Inactive = 1
    }

    [DataContract]
    public class ActivityType
    {
        [DataMember]
        public string Code { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Description { get; set; }

        public override string ToString()
        {
            if (Code != null)
            {
                return Code.ToString(CultureInfo.InvariantCulture);
            }
            else
            {
                return base.ToString();
            }
        }
    }

サービスの実装

  public class TimeSheetManagementService : ITimeSheetManagementService
    {
        public List<BusinessEntities.Activity> GetActivities()
        {
            TimeSheetManagementDataController controller = new TimeSheetManagementDataController();


            var activities = controller.GetActivities();
            var activitiesresult = activities.Select(activity => new BusinessEntities.Activity()
                                                                     {
                                                                         ActivityTypeId =
                                                                             new BusinessEntities.ActivityType()
                                                                                 {
                                                                                     Code = activity.ActivityType.Code,
                                                                                     Description =
                                                                                         activity.ActivityType.
                                                                                         Description,
                                                                                     Name = activity.ActivityType.Name
                                                                                 },
                                                                         Code = activity.Code,
                                                                         Description = activity.Description,
                                                                         Status =  (EntityStatus)  Enum.Parse(typeof(EntityStatus),Convert.ToString((activity.Status==true)?1:0))
                                                                     });

            return activitiesresult.ToList();
        }
    }

クライアントの実装

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
            <Columns>
             <asp:BoundField runat="server" DataField="Code"/>

             <asp:BoundField runat="server" DataField="Description"/>

             <asp:BoundField runat="server" DataField="Status"/>

             <asp:BoundField runat="server" DataField="ActivityTypeId"/>
            </Columns>
        </asp:GridView>

出力

  Code Description                   Status    ActivityTypeId
    ACT2    Requirement Feasibility Study Inactive TimeSheetManagementServiceRef.ActivityType
    ACT1    Requirement analysis    Inactive     TimeSheetManagementServiceRef.ActivityType
4

1 に答える 1