3
即使通過返回ActivityType類中的ActivityType.Code屬性值,我在DataContract中覆蓋了ToString方法。我仍然沒有在客戶端上綁定grid.can的ActivityType.Code屬性值,讓我知道ToString方法如何可用於客戶端。ToString方法在WCF中的DataContract中重寫
下面是代碼基礎
數據合同
[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
重複問題:請參閱http://stackoverflow.com/questions/1181039/wcf-datacontract-tostring-function和http://stackoverflow.com/questions/1133063/wcf-datacontract-class-with-methods – Styxxy
感謝您的參考,但那些參考解決方案說我們應該有代理類,但是當我在網站項目中創建服務引用它只是創建XSD文件,我是否需要使用SvcUtil.exe顯式創建代理類。在設置服務引用時,無法使用visual studio 2010自身生成它。請建議 – sameer
我通常會使用這些合約創建一個類庫,並在您的服務和您的應用程序中引用此類庫。 – Styxxy