我有一個通過Web服務(WCF)來的類對象。該類具有String類型的屬性和一些自定義類類型。如何將類對象轉換爲字符串?
如何獲取類型自定義類的屬性的屬性名稱和屬性名稱。
我嘗試了使用GetProperies()的反射,但失敗了。如果屬性類型是字符串類型,GetFields()給了我一些成功,我也想獲得自定義類型屬性的屬性。
這是我的代碼。
public static string ToClassString(this object value)
{
if (value == null)
return null;
var builder = new StringBuilder();
builder.Append(value.GetType().Name + "{ ");
foreach (var prop in value.GetType().GetFields(
BindingFlags.Public
| BindingFlags.Static | BindingFlags.Instance | BindingFlags.FlattenHierarchy | BindingFlags.GetProperty))
{
builder.Append("{ ");
builder.Append(prop.Name + " , ");
switch (prop.FieldType.Namespace)
{
case "System":
builder.Append(prop.GetValue(value) + " }");
break;
default:
builder.Append(prop.GetValue(value).ToClassString() + " }");
break;
}
}
builder.Append("}");
return builder.ToString();
}
我得到的輸出
NotifyClass {{唯一ID,16175} {將nodeinfo,的nodeinfo {}} {事件類型, SAPDELETE}}
這裏是我想將其實例轉換爲字符串的類
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.MessageContractAttribute(WrapperName="NotifyReq", WrapperNamespace="wrapper:namespace", IsWrapped=true)]
public partial class Notify
{
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="custom:namespace", Order=0)]
public int UniqueId;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="custom:namespace", Order=1)]
public eDMRMService.NodeInfo NodeInfo;
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="custom:namespace", Order=2)]
public string EventType;
public Notify()
{
}
public Notify(int UniqueId, eDMRMService.NodeInfo NodeInfo, string EventType)
{
this.UniqueId = UniqueId;
this.NodeInfo = NodeInfo;
this.EventType = EventType;
}
}
如何從不同的輸出,你想到什麼?問題是它不包含'NodeInfo'的成員?如果是這樣的話:'NotInfo'看起來像什麼?會員是「公共」嗎?這是一種公共類型嗎? etc –