Unable to check type of entity of base/inherited classes
我在使用getType()和typeof()获取类的类型时遇到了一个问题,问题是它不起作用。
我有内容的基本类,继承了播客和有声读物的类。
我首先使用代码,每个层次结构都有一个表(它将所有子类存储在一个带有鉴别器列的表中)来存储所有内容实体。
我希望按标题列查询内容表,并返回内容实体。然后,根据类型(播客、有声读物)做一些其他的事情。但是类型检查不起作用。
模型
1 2 3 4 5 6 7 8 9 | public abstract class Content { public string Title { get; set; } } public class Podcast : Content { } |
知识库
1 2 3 4 5 6 7 | public Content FindContentByRoutingTitle(string routingTitle) { var content = Context.ContentItems .FirstOrDefault(x => x.RoutingTitle == routingTitle); return content; } |
控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var content = _contentRepository.FindContentByRoutingTitle(title); if (content.GetType() == typeof(Podcast)) { return RedirectToAction("Index","Podcast", new { title = title }); } else if (content.GetType() == typeof(Content)) { //just a check to see if equating with Content return RedirectToAction("Index","Podcast", new { title = title }); } else { //if/else block always falls to here. return RedirectToAction("NotFound","Home"); } |
我这里有什么东西不见了吗?谢谢你的帮助。
引用:类型检查:typeof、gettype还是is?
选项1:
1
2
3
4选项2:
1
2
3
4