[英]How can I convert an Class Object into String?
I have a class object that comes through a web service (WCF).我有一个 class object 通过 web 服务 (WCF)。 The class has properties of type String and some custom Class Types. class 具有 String 类型的属性和一些自定义 Class 类型。
How can I get the Property Name and Properties Name of Properties that are of type custom class.如何获取类型为自定义 class 的属性的属性名称和属性名称。
I tried reflection using GetProperies(), but failed.我尝试使用 GetProperies() 进行反射,但失败了。 GetFields() gave me some success if the Property type is of type string, I also want to get the Properties of Custom Type Properties.如果属性类型是字符串类型,GetFields() 给了我一些成功,我还想获得自定义类型属性的属性。
Here is my Code.这是我的代码。
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();
}
I got the output as我得到了 output 作为
NotifyClass{ { UniqueId, 16175 }{ NodeInfo, NodeInfo{ } }{ EventType, SAPDELETE }} NotifyClass{ { UniqueId, 16175 }{ NodeInfo, NodeInfo{ } }{ EventType, SAPDELETE }}
Here is the class whose instance I want to convert into string这是我要将其实例转换为字符串的 class
[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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.