Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在Web API中将派生属性序列化为JSON_C#_Asp.net Web Api_Entity Framework 5_Json.net - Fatal编程技术网

C# 无法在Web API中将派生属性序列化为JSON

C# 无法在Web API中将派生属性序列化为JSON,c#,asp.net-web-api,entity-framework-5,json.net,C#,Asp.net Web Api,Entity Framework 5,Json.net,我正在尝试获取此类型的对象(通过Web API): 我得到一个错误: “从'Domain.Document'上的'FolderParent'获取值时出错。”我将一个简单的示例放在一起,它序列化得很好。看起来这个bug一定是来自FileFolder类设计中的某个地方,我们现在还没有 [TestClass] public class UnitTest8 { [TestMethod] public void TestJasonFileFolder() { var

我正在尝试获取此类型的对象(通过Web API):

我得到一个错误:


“从'Domain.Document'上的'FolderParent'获取值时出错。”

我将一个简单的示例放在一起,它序列化得很好。看起来这个bug一定是来自FileFolder类设计中的某个地方,我们现在还没有

[TestClass]
public class UnitTest8
{
    [TestMethod]
    public void TestJasonFileFolder()
    {
        var folder = new FileFolder();
        folder.Folder = new FileFolder { Name = "Parent" };
        folder.Name = "Something";

        var document = new Document { Folder = folder, Id = 1 };

        var test = JsonConvert.SerializeObject(document);
        Assert.IsNotNull(test);
    }
}

public class Document
{
    public int Id { get; set; }
    public FileFolder Folder { get; set; }
    public FileFolder FolderParent
    {
        get
        {
            return this.Folder.Folder;
        }
    }
}

public class FileFolder
{
    public string Name { get; set; }
    public FileFolder Folder { get; set; }
}

文件夹类是什么样子的。似乎您的示例中一定有输入错误,因为您甚至无法使用名称文件夹的成员编译类公用文件夹。已更改名称,这不是实际代码。建议:在方法中提供不同的名称,因为您有一个同名的对象(文件夹)。是否编译?您应该有如下错误:不一致的可访问性:属性类型“namespacename.FileFolder”小于属性“namespacename.Document.FolderParent”。我不知道序列化的是否是JsonConvert,但我认为它是Web API中的默认序列化程序(到JSON)。我将这行代码放在我的WebApiConfig.cs中:var appXmlType=config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t=>t.MediaType==“application/xml”);config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);当然,您可以接受我提供的单元测试,并将其用于特定的代码库。如果JsonConvert.Serialize工作正常,那么我们就知道这是一个配置/WebAPI问题。如果它确实抛出了相同的错误,那么我们就知道这是FileFolder类的某种问题。我尝试过了,它通过了。所以我的Web API配置可能有问题
[TestClass]
public class UnitTest8
{
    [TestMethod]
    public void TestJasonFileFolder()
    {
        var folder = new FileFolder();
        folder.Folder = new FileFolder { Name = "Parent" };
        folder.Name = "Something";

        var document = new Document { Folder = folder, Id = 1 };

        var test = JsonConvert.SerializeObject(document);
        Assert.IsNotNull(test);
    }
}

public class Document
{
    public int Id { get; set; }
    public FileFolder Folder { get; set; }
    public FileFolder FolderParent
    {
        get
        {
            return this.Folder.Folder;
        }
    }
}

public class FileFolder
{
    public string Name { get; set; }
    public FileFolder Folder { get; set; }
}