我试图根据条件动态调用类方法.这就是我这样做的方式
我有三个类实现一个接口
interface IReadFile
{
string DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
A,B,C三个类实现了上面的接口.
我试图将它们添加到哈希表中,代码如下
_HashT.Add("a", new classA());
_HashT.Add("b", new classB());
_HashT.Add("c", new classC());
Run Code Online (Sandbox Code Playgroud)
这编译很好,但会产生运行时错误.{你调用的对象是空的.}
我打算根据与键值匹配的参数将正确的类返回到接口类型.如果我寄出一个.ClassA返回到接口类型并调用该方法.
IReadFile Obj = (IReadFile )_HashT["a"].GetType();
obj.DoStuff();
Run Code Online (Sandbox Code Playgroud)
如何更正上面需要将对象添加到哈希表的部分?或者我需要使用不同的方法吗?所有类都在同一个程序集和命名空间中.
谢谢你的时间.
猜测一下,你还没有实例化你的_HashT对象.
您需要在代码中的某处(可能是声明或构造函数)来实例化它:
HashTable _HashT = new HashTable();
Run Code Online (Sandbox Code Playgroud)
如果你不这样做,那_HashT将是null一个尝试add,它会失败,NullReferenceException你已经得到了.
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |