Kum*_*mar 6 c# asp.net reflection
我正在尝试使用反射创建一个通用的对象列表.以下代码抛出错误无法创建接口的实例..我可以将IList更改为List并且它工作正常,但我想知道是否有办法让这个与IList一起工作.
var name = typeof (IList<T>).AssemblyQualifiedName;
Type type = Type.GetType(name);
var list = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)
不,不可能创建接口的实例.
.NET(或者说Activator.CreateInstance方法)应该如何决定它应该实例化的接口的哪个实现?
你做不到:
IList<int> l = new IList<int>();
Run Code Online (Sandbox Code Playgroud)
或者,你呢?您无法实例化接口,因为接口通常是定义或描述类型应实现的功能的合同.
如果你这样做,你必须实例化一个具体的课程
var type = Type.GetType(typeof (List<T>).AssemblyQualifiedName);
var list = (Ilist<T>)Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)
你会成功的(只要你提供T的有效值).
| 归档时间: |
|
| 查看次数: |
10296 次 |
| 最近记录: |