从rest转换对象时出错(不允许转换)

从rest转换对象时出错(不允许转换),rest,restsharp,Rest,Restsharp,我将尝试解释这个问题: 1-从服务器端,我得到了一个名为Document的类,该类从类节点扩展(几个类从节点扩展) 2-从RESTAPI中,我得到了一个作为响应节点对象发送的服务(文档或其他从节点扩展的内容)。Rest输出实际上是发送所有信息(文档等) 3-当到达rest客户机时,我得到一个节点类(在这里一切正常之前没有问题) 4-当我查找节点是否为文档类型时,问题就出现了,答案总是错误的 在有人回答我之前是不可能的(我对java和php做了完全相同的事情,没有任何问题)。我找不到密钥(例如,在

我将尝试解释这个问题:

1-从服务器端,我得到了一个名为Document的类,该类从类节点扩展(几个类从节点扩展)

2-从RESTAPI中,我得到了一个作为响应节点对象发送的服务(文档或其他从节点扩展的内容)。Rest输出实际上是发送所有信息(文档等)

3-当到达rest客户机时,我得到一个节点类(在这里一切正常之前没有问题)

4-当我查找节点是否为文档类型时,问题就出现了,答案总是错误的

在有人回答我之前是不可能的(我对java和php做了完全相同的事情,没有任何问题)。我找不到密钥(例如,在java中,在@xmlseealways({Document.class,Folder.class,Record.class,Mail.class})上有一些注释对它有帮助)

我不知道是否可以用restcharp实现,或者我必须进行更低级的实现。任何关于它的线索或帮助都将不胜感激

下面是一些代码:

// Query result List
public class QueryResultList
{
  public  List<QueryResult> queryResults { get; set; } 
}

// Query Result
public class QueryResult
{
  public Node node { get; set; }
}

// Class Node
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

using System.Xml.Serialization;


namespace com.openkm.sdk4csharp.bean
{
    public class Node
    {
        private static long serialVersionUID = 1L;
        public static String AUTHOR = "okm:author";
        public static String NAME = "okm:name";

        public DateTime created { get; set; }
        public String path { get; set; }
        public String author { get; set; }
        public int permissions { get; set; }
        public String uuid { get; set; }
        public bool subscribed { get; set; }
        public long nodeClass { get; set; }
        public List<String> subscriptors { get; set; }
        public List<String> keywords { get; set; }
        public List<Folder> categories { get; set; }
        public List<Note> notes { get; set; }
        //public String linkTarget { get; set; }
        //public Version actualVersion { get; set; }
        //public Boolean promotedAsRecord { get; set; }

        public String toString() 
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("{");
            sb.Append("path=").Append(path);
            sb.Append(", permissions=").Append(permissions);
            sb.Append(", created=").Append(created == null ? null : created.GetDateTimeFormats());
            sb.Append(", subscribed=").Append(subscribed);
            sb.Append(", nodeClass=").Append(nodeClass);
            sb.Append(", subscriptors=").Append(subscriptors);
            sb.Append(", uuid=").Append(uuid);
            sb.Append(", keywords=").Append(keywords);
            sb.Append(", categories=").Append(categories);
            sb.Append(", notes=").Append(notes);
            // sb.Append(", linkTarget=").Append(linkTarget);
            //sb.Append(", actualVersion=").Append(actualVersion);
            //sb.Append(", promotedAsRecord=").Append(promotedAsRecord);
            sb.Append("}");
            return sb.ToString();
        }
    }
}


// Class Document
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace com.openkm.sdk4csharp.bean
{
    public class Document:Node
    {
        private static long serialVersionUID = 1L;

        public static String TYPE = "okm:document";
        public static String CONTENT = "okm:content";
        public static String CONTENT_TYPE = "okm:resource";
        public static String SIZE = "okm:size";
        public static String LANGUAGE = "okm:language";
        public static String VERSION_COMMENT = "okm:versionComment";
        public static String NAME = "okm:name";
        public static String TEXT = "okm:text";
        public static String TITLE = "okm:title";
        public static String DESCRIPTION = "okm:description";

        public String title { get; set; }
        public String description { get; set; }
        public String language { get; set; }
        public DateTime lastModified { get; set; }
        public String mimeType { get; set; }
        public Boolean locked { get; set; }
        public Boolean checkedOut { get; set; }
        public Version actualVersion { get; set; }
        public LockInfo lockInfo { get; set; }
        public Boolean signed { get; set; }
        public Boolean convertibleToPdf { get; set; }
        public Boolean convertibleToSwf { get; set; }
        public Boolean convertibleToDxf { get; set; }
        public String cipherName { get; set; }
        //public String annotations { get; set; }

      public String toString() 
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("{");
                sb.Append("path=").Append(path);
                sb.Append(", title=").Append(title);
                sb.Append(", description=").Append(description);
                sb.Append(", mimeType=").Append(mimeType);
                sb.Append(", author=").Append(author);
                sb.Append(", permissions=").Append(permissions);
                sb.Append(", created=").Append(created == null ? null : created.GetDateTimeFormats());
                sb.Append(", lastModified=").Append(lastModified == null ? null : lastModified.GetDateTimeFormats());
                sb.Append(", keywords=").Append(keywords);
                sb.Append(", categories=").Append(categories);
                sb.Append(", locked=").Append(locked);
                sb.Append(", lockInfo=").Append(lockInfo);
                sb.Append(", subscribed=").Append(subscribed);
                sb.Append(", subscriptors=").Append(subscriptors);
                sb.Append(", uuid=").Append(uuid);
                sb.Append(", convertibleToPdf=").Append(convertibleToPdf);
                sb.Append(", convertibleToSwf=").Append(convertibleToSwf);
                sb.Append(", convertibleToDxf=").Append(convertibleToDxf);
                sb.Append(", cipherName=").Append(cipherName);
                sb.Append(", notes=").Append(notes);
                //sb.Append(", annotations=").Append(annotations);
                sb.Append("}");
                return sb.ToString();
            }
    }
}



QueryResultList ret = new QueryResultList();
IRestRequest request = new RestRequest(uriHelper.SEARCH_FIND_BY_CONTENT, Method.GET);
request.RequestFormat = DataFormat.Xml;
request.AddParameter("content", content, ParameterType.QueryString);
IRestClient client = getClient(url, user, password);
IRestResponse<QueryResultList> response = client.Execute<QueryResultList>(request);

// here when I iterate results -> node and try to cast to Document fails
...
//查询结果列表
公共类QueryResultList
{
公共列表查询结果{get;set;}
}
//查询结果
公共类查询结果
{
公共节点节点{get;set;}
}
//类节点
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
利用制度全球化;
使用System.Xml.Serialization;
名称空间com.openkm.sdk4csharp.bean
{
公共类节点
{
私有静态长SerialVersionId=1L;
公共静态字符串AUTHOR=“okm:AUTHOR”;
公共静态字符串NAME=“okm:NAME”;
已创建公共日期时间{get;set;}
公共字符串路径{get;set;}
公共字符串作者{get;set;}
公共int权限{get;set;}
公共字符串uuid{get;set;}
公共bool订阅{get;set;}
公共长节点类{get;set;}
公共列表下标{get;set;}
公共列表关键字{get;set;}
公共列表类别{get;set;}
公共列表注释{get;set;}
//公共字符串linkTarget{get;set;}
//公共版本实际版本{get;set;}
//公共布尔值promotedAsRecord{get;set;}
公共字符串toString()
{
StringBuilder sb=新的StringBuilder();
某人附加(“{”);
sb.Append(“path=”).Append(path);
sb.Append(“,permissions=“)。Append(permissions);
sb.Append(“,created=”).Append(created==null?null:created.GetDateTimeFormats());
sb.Append(“,subscribed=”)。Append(subscribed);
sb.Append(“,nodeClass=”).Append(nodeClass);
sb.Append(“,subscriptors=”).Append(subscriptors);
sb.Append(“,uuid=”).Append(uuid);
sb.Append(“,keywords=”).Append(关键字);
sb.追加(“,categories=”)。追加(类别);
某人追加(“,notes=”)。追加(notes);
//sb.Append(“,linkTarget=”).Append(linkTarget);
//sb.Append(“,actualVersion=”)。Append(actualVersion);
//sb.Append(“,promotedAsRecord=”).Append(promotedAsRecord);
某人附加(“}”);
使某人返回字符串();
}
}
}
//类文档
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
利用制度全球化;
名称空间com.openkm.sdk4csharp.bean
{
公共类文档:节点
{
私有静态长SerialVersionId=1L;
公共静态字符串TYPE=“okm:文档”;
公共静态字符串CONTENT=“okm:CONTENT”;
公共静态字符串内容\u TYPE=“okm:资源”;
公共静态字符串SIZE=“okm:SIZE”;
公共静态字符串LANGUAGE=“okm:LANGUAGE”;
公共静态字符串VERSION\u COMMENT=“okm:versionComment”;
公共静态字符串NAME=“okm:NAME”;
公共静态字符串TEXT=“okm:TEXT”;
公共静态字符串TITLE=“okm:TITLE”;
公共静态字符串DESCRIPTION=“okm:DESCRIPTION”;
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共字符串语言{get;set;}
公共日期时间lastModified{get;set;}
公共字符串mimeType{get;set;}
公共布尔锁定{get;set;}
公共布尔校验输出{get;set;}
公共版本实际版本{get;set;}
public LockInfo LockInfo{get;set;}
公共布尔符号{get;set;}
公共布尔可转换PDF{get;set;}
公共布尔可转换为swf{get;set;}
公共布尔可转换Todxf{get;set;}
公共字符串密码名{get;set;}
//公共字符串批注{get;set;}
公共字符串toString()
{
StringBuilder sb=新的StringBuilder();
某人附加(“{”);
sb.Append(“path=”).Append(path);
某人追加(“,title=”)。追加(title);
sb.Append(“,description=”)。Append(description);
sb.Append(“,mimeType=”).Append(mimeType);
sb.Append(“,author=”)。Append(author);
sb.Append(“,permissions=“)。Append(permissions);
sb.Append(“,created=”).Append(created==null?null:created.GetDateTimeFormats());
sb.Append(“,lastModified=”).Append(lastModified==null?null:lastModified.GetDateTimeFormats());
sb.Append(“,keywords=”).Append(关键字);
sb.追加(“,categories=”)。追加(类别);
sb.Append(“,locked=”).Append(locked);
sb.Append(“,lockInfo=”).Append(lockInfo);
sb.Append(“,subscribed=”)。Append(subscribed);
sb.Append(“,subscriptors=”).Append(subscriptors);
sb.Append(“,uuid=”).Append(uuid);
sb.Append(“,convertibleToPdf=”).Append(convertibleToPdf);
// Query result List
public class QueryResultList
{
  public  List<QueryResult> queryResults { get; set; } 
}

// Query Result
public class QueryResult
{
  public Node node { get; set; }
}

// Class Node
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

using System.Xml.Serialization;


namespace com.openkm.sdk4csharp.bean
{
    public class Node
    {
        private static long serialVersionUID = 1L;
        public static String AUTHOR = "okm:author";
        public static String NAME = "okm:name";

        public DateTime created { get; set; }
        public String path { get; set; }
        public String author { get; set; }
        public int permissions { get; set; }
        public String uuid { get; set; }
        public bool subscribed { get; set; }
        public long nodeClass { get; set; }
        public List<String> subscriptors { get; set; }
        public List<String> keywords { get; set; }
        public List<Folder> categories { get; set; }
        public List<Note> notes { get; set; }
        //public String linkTarget { get; set; }
        //public Version actualVersion { get; set; }
        //public Boolean promotedAsRecord { get; set; }

        public String toString() 
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("{");
            sb.Append("path=").Append(path);
            sb.Append(", permissions=").Append(permissions);
            sb.Append(", created=").Append(created == null ? null : created.GetDateTimeFormats());
            sb.Append(", subscribed=").Append(subscribed);
            sb.Append(", nodeClass=").Append(nodeClass);
            sb.Append(", subscriptors=").Append(subscriptors);
            sb.Append(", uuid=").Append(uuid);
            sb.Append(", keywords=").Append(keywords);
            sb.Append(", categories=").Append(categories);
            sb.Append(", notes=").Append(notes);
            // sb.Append(", linkTarget=").Append(linkTarget);
            //sb.Append(", actualVersion=").Append(actualVersion);
            //sb.Append(", promotedAsRecord=").Append(promotedAsRecord);
            sb.Append("}");
            return sb.ToString();
        }
    }
}


// Class Document
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace com.openkm.sdk4csharp.bean
{
    public class Document:Node
    {
        private static long serialVersionUID = 1L;

        public static String TYPE = "okm:document";
        public static String CONTENT = "okm:content";
        public static String CONTENT_TYPE = "okm:resource";
        public static String SIZE = "okm:size";
        public static String LANGUAGE = "okm:language";
        public static String VERSION_COMMENT = "okm:versionComment";
        public static String NAME = "okm:name";
        public static String TEXT = "okm:text";
        public static String TITLE = "okm:title";
        public static String DESCRIPTION = "okm:description";

        public String title { get; set; }
        public String description { get; set; }
        public String language { get; set; }
        public DateTime lastModified { get; set; }
        public String mimeType { get; set; }
        public Boolean locked { get; set; }
        public Boolean checkedOut { get; set; }
        public Version actualVersion { get; set; }
        public LockInfo lockInfo { get; set; }
        public Boolean signed { get; set; }
        public Boolean convertibleToPdf { get; set; }
        public Boolean convertibleToSwf { get; set; }
        public Boolean convertibleToDxf { get; set; }
        public String cipherName { get; set; }
        //public String annotations { get; set; }

      public String toString() 
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("{");
                sb.Append("path=").Append(path);
                sb.Append(", title=").Append(title);
                sb.Append(", description=").Append(description);
                sb.Append(", mimeType=").Append(mimeType);
                sb.Append(", author=").Append(author);
                sb.Append(", permissions=").Append(permissions);
                sb.Append(", created=").Append(created == null ? null : created.GetDateTimeFormats());
                sb.Append(", lastModified=").Append(lastModified == null ? null : lastModified.GetDateTimeFormats());
                sb.Append(", keywords=").Append(keywords);
                sb.Append(", categories=").Append(categories);
                sb.Append(", locked=").Append(locked);
                sb.Append(", lockInfo=").Append(lockInfo);
                sb.Append(", subscribed=").Append(subscribed);
                sb.Append(", subscriptors=").Append(subscriptors);
                sb.Append(", uuid=").Append(uuid);
                sb.Append(", convertibleToPdf=").Append(convertibleToPdf);
                sb.Append(", convertibleToSwf=").Append(convertibleToSwf);
                sb.Append(", convertibleToDxf=").Append(convertibleToDxf);
                sb.Append(", cipherName=").Append(cipherName);
                sb.Append(", notes=").Append(notes);
                //sb.Append(", annotations=").Append(annotations);
                sb.Append("}");
                return sb.ToString();
            }
    }
}



QueryResultList ret = new QueryResultList();
IRestRequest request = new RestRequest(uriHelper.SEARCH_FIND_BY_CONTENT, Method.GET);
request.RequestFormat = DataFormat.Xml;
request.AddParameter("content", content, ParameterType.QueryString);
IRestClient client = getClient(url, user, password);
IRestResponse<QueryResultList> response = client.Execute<QueryResultList>(request);

// here when I iterate results -> node and try to cast to Document fails
...