gpt4 book ai didi

c# - 类型 X 与导入的类型 X 冲突

转载 作者:太空狗 更新时间:2023-10-29 22:16:19 25 4
gpt4 key购买 nike

在 Entity Framework (数据库优先)中,我试图向创建的类添加一些数据注释。

一般来说:我创建了 X 类:

namespace Info
{
using System;
using System.Collections.Generic;

public partial class X
{
public string SomeProperty {get; set;}
...
}
}

我想在序列化为 JSON 时忽略属性 SomeProperty 因此在 App_Code/Metadata 我创建类 X.cs 并添加一些元数据:

namespace Info
{

public class XMetaData
{
[JsonIgnore]
public string SomeProperty{get; set;}
}

[MetadataType(typeof(XMetaData))]
public partial class X
{

}

}

上面我手动将命名空间从 Info.App_Code.Metadata 更改为 Info 以匹配部分类。

但是在我使用 X 类的所有地方我都有警告

“.../Info/App_Code/Metadata/X.cs”中的类型 Info.X 与“.../Info/X.cs”中导入的类型 Info.X 冲突。使用“.../Info/App_Code/Metadata/X.cs”中定义的类型

我预计两个部分类都会被合并,但是所有出现的地方都指的是那个空的 X 类。

有人知道我错过了什么吗?

最佳答案

引用同一类的多个分部类定义必须全部存在于单个程序集中。在上面的示例中,在编译期间元数据应该被烘焙到类中,并且在编译之后类是完整的,包括所有部分。分部类是将同一个类的定义拆分到多个文件中的一种手段。

参见 here详尽的解释,但请注意以下几点:

All partial-type definitions meant to be parts of the same type must be defined in the same assembly and the same module (.exe or .dll file). Partial definitions cannot span multiple modules.

This这里的链接解释说

In general, ASP.NET creates an assembly for each application directory (such as App_Code) and one for the main directory.

对于您的情况,虽然分部类在同一个项目相同的命名空间中,但它们没有被编译到同一个程序集中。

关于c# - 类型 X 与导入的类型 X 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com