如何获取对象类型并将其传递给对象内容
本文关键字:对象 取对象 何获 类型 | 更新日期: 2023-09-27 18:33:49
我决定创建一个函数,将许多行代码封装成 1 行代码。因此,此示例脚本。 我无法工作的是获取类的Type
并将其传递给ObjectContent
的参数以使其工作。
查看ObjectContent<xmlObjectType>(....)
中的xmlObjectType
变量,以及在传入的参数对象上使用GetType()
xmlObjectType
System.Type
赋值。 你们怎么做才能让实际的对象类型与ObjectContent
一起使用?
public class XmlError
{
public string Message { get; set; }
}
public class XmlBuilderTools
{
public HttpResponseMessage ErrorResponse(object parmXmlErrorLayout)
{
HttpResponseMessage httpResponseMsg = new HttpResponseMessage();
Type xmlObjectType = parmXmlErrorLayout.GetType();
httpResponseMsg.StatusCode = HttpStatusCode.BadRequest;
httpResponseMsg.Content = new ObjectContent<xmlObjectType>(parmXmlErrorLayout, new XmlMediaTypeFormatter());
}
}
//Acutual scripts...
XmlBuilderTools xmlBuilderTools = new XmlBuilderTools();
XmlError xmlError = new XmlError();
xmlError.Message = "Foo";
return xmlBuilderTools.ErrorResponse(xmlError);
Edited
- 找到了此问题的解决方法。 您不必调用它,而是使用其他有效的对象重载。 我嘟!
httpResponseMsg.Content = new ObjectContent(parmXmlErrorLayout.GetType(), parmXmlErrorLayout, new CustomXmlFormatter());
你根本做不到。你必须改用反射。
MethodInfo method = yourInstance.GetType().GetMethod("ObjectContent").MakeGenericMethod(new Type[] { xmlObjectType });
method.Invoke(this, new object[] { parmXmlErrorLayout, new XmlMediaTypeFormatter() });
否则,也将类型作为参数传递给方法。