将 XmlSerializer 与抽象数据请求混淆使用

Confusion using XmlSerializer with abstract data request

我是 C# 的新手,这个问题似乎很可疑,但请耐心等待。我有一个 XmlSerializer 可以完美地工作,如下所示 (小代码片段) :

 public static AbstractResponseMessageData Execute(AbstractRequestMessageData objRQ, string strComponent)
    {
        StreamWriter rqWriter = null;
        StreamReader rsReader = null;
        try
        {
            Cursor.Current = Cursors.WaitCursor;

            String requestType = objRQ.GetType().Name;
            MessageBox.Show(requestType);

            String xmlRequest = "";
            var serializer = new XmlSerializer(typeof(ARC_LOGONRQ));

不幸的是,由于 ARC_LOGONRQ 是来自抽象数据请求的类型,它并不总是我需要的类型。我什至知道它是使第一个请求工作的类型的唯一方法是在我的代码中使用 MessageBox 。我想我会简单地写这样的东西来规避这个问题:

Type acType = Type.GetType(requestType);

然后在我的序列化程序中使用 acType 而不是 ARC_LOGONRQ。但是,这会引发 "Type or Namespace could not be found" 错误。将 ARC_LOGONRQ 替换为 objRQ.GetType()objRQ 也会引发相同的错误。

我不明白为什么在使用 acType 时会出现此错误,也不明白我应该如何在不指定实际数据类型的情况下正确地序列化 objRQ,我不能这样做).

非常感谢。

更多信息:
使用序列化程序:

var serializer = new XmlSerializer(typeof(objRQ.GetType()));

我也遇到了 "Type or Namespace could not be found" 错误。我认为这是因为类型 ARC_LOGONRQ 似乎是任意的,或者不是在 System.

您总是可以通过调用 GetType 来获取对象的 Type。试试这个:

var serializer = new XmlSerializer(objRQ.GetType());

在编译时使用typeof得到一个Type。使用GetType在运行时间获得Type