如何获取对象类型并将其传递给对象内容

本文关键字:对象 取对象 何获 类型 | 更新日期: 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() });

否则,也将类型作为参数传递给方法。