错误:类型名称“X”不存在于类型“Y”中
Posted
技术标签:
【中文标题】错误:类型名称“X”不存在于类型“Y”中【英文标题】:Error: The type name 'X' does not exist in the type 'Y' 【发布时间】:2022-01-10 08:27:03 【问题描述】:我遇到了这个问题
类型名称“RoomStayVmNew”不存在于类型“HotelVmNew.HotelRoomVmNew”中
但我是我的视图模型,
public class HotelVmNew: IMapFrom<Domain.Entities.Hotel>
public IEnumerable<HotelRoomVmNew> Rooms get; set; = new List<HotelRoomVmNew>();
public class HotelRoomVmNew: IMapFrom<Domain.Entities.HotelRoom>
public IEnumerable<RoomStayVmNew> Stays get; set; = new List<RoomStayVmNew>();
public class RoomStayVmNew: IMapFrom<Domain.Entities.RoomStay>
public IEnumerable<RoomStayFacilityVm> Facilities get; set; = new List<RoomStayFacilityVm>();
var hotel = await _context.Hotels
.Where(i => i.Code == request.Code)
.Select(i => new HotelVmNew
Code = i.Code,
Rooms = i.Rooms.Select(i => new HotelVmNew.HotelRoomVmNew
Id = i.Id,
Stays = i.Stays.Select(x => new HotelVmNew.HotelRoomVmNew.RoomStayVmNew ),
)
)
当我选择HotelRoomVmNew
时出现以下错误:
类型中不存在类型名称“RoomStayVmNew” 'HotelVmNew.HotelRoomVmNew'。
为什么会出现这个错误?
【问题讨论】:
你能添加调用堆栈吗? 【参考方案1】: new HotelVmNew.HotelRoomVmNew.RoomStayVmNew
应该是
new RoomStayVmNew
而且你只需要这样做,因为你的类定义已经在通过初始化程序初始化一个新的 List 构造,但我猜你刚刚截断了初始化对于每个 Stay 实例。
此声明:
new HotelVmNew.HotelRoomVmNew.RoomStayVmNew
表示希望 HotelRoomVmNew 的定义存在于 HotelVmNew 中,而 RoomStayVmNew 的定义存在于 HotelRoomVmNew 中。
例如:
public class HotelVmNew: IMapFrom<Domain.Entities.Hotel>
public IEnumerable<HotelRoomVmNew> Rooms get; set; = new List<HotelRoomVmNew>();
public class HotelRoomVmNew: IMapFrom<Domain.Entities.HotelRoom>
public IEnumerable<RoomStayVmNew> Stays get; set; = new List<RoomStayVmNew>();
public class RoomStayVmNew: IMapFrom<Domain.Entities.RoomStay>
public IEnumerable<RoomStayFacilityVm> Facilities get; set; = new List<RoomStayFacilityVm>();
请注意,类在其父级范围内定义。您当然可以这样设置,但它会不断地要求您完全扩展类名以获取依赖类定义。除非您真的想明确类的所有权,否则我想不出任何好的理由这样做。
【讨论】:
以上是关于错误:类型名称“X”不存在于类型“Y”中的主要内容,如果未能解决你的问题,请参考以下文章
错误“名称空间'System.Web'中不存在类型或名称空间名称'Script'”背后是不是有解释
错误 CS0234 名称空间“MvvmCross”中不存在类型或名称空间名称“Platforms”(您是不是缺少程序集引用?)
Typescript 未检测到声明“d.ts”文件中不存在的类型名称的错误
错误 CS0234:命名空间“Microsoft”中不存在类型或命名空间名称“AspNetCore”(您是不是缺少程序集引用?)