我正在尝试创建一个报表屏幕,该屏幕会动态调整自身以适应实体框架生成的模型中存在的数据库视图的内容。
要获取我正在使用此代码的实体:
var view = context.GetType().GetProperty(viewName).GetValue(context, null);
此代码返回满足我需求的ObjectSet<viewType>
。
现在我需要获取视图类型的属性,以便我可以获取列。
我试着用这样的东西:
var methodInfo = view .GetType().GetMethod("First");
var properties = methodInfo.ReturnType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
但它没有找到方法“第一”,我不知道在哪里可以找到一些帮助,我怎样才能使这个工作。
答案 0 :(得分:0)
我相信,当你真正想要first()
时,你正试图获得ObjectSet<viewType>
viewType
的方法。所以这就是你需要的。
var methodInfo = view.GetType().GetGenerericArguments()[0].GetMethod("First");
答案 1 :(得分:0)
首先是System.Linq.Queryable上的扩展方法。
答案 2 :(得分:0)
var gtype = view.GetType().GetGenericArguments()[0];
如果view是ObjectSet&lt; FooBars&gt;
gtype将是FooBars
然后你可以在gtype上调用GetProperties。