作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这似乎是基本问题,但我正在努力解决(可能是因为累了)。
例如- 如果我像这样创建存储库实例 =>
var repositoryType = typeof(Repository<>).MakeGenericType(entityType);
// repository type==object :(
var repository = ServiceLocator.Current.GetInstance(repositoryType);
调用repository.All()
方法的最佳方式是什么?反射(reflection)是唯一的方法吗?
最佳答案
这取决于是否Repository<>
公开一些非通用接口(interface)(如 ITable
与 LINQ-to-SQL 中的 Table<T>
相比)。如果没有,则必须使用反射。如果它是,则转换为非通用接口(interface):
IRepository repository = (IRepository)ServiceLocator
.Current.GetInstance(repositoryType);
IList data = repository.All();
在 4.0 中,您还可以考虑 dynamic
:
dynamic repository = ServiceLocator.Current.GetInstance(repositoryType);
IList data = repository.All();
关于c# - 当类型参数未知时如何调用泛型实例的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972205/
我是一名优秀的程序员,十分优秀!