将对象添加到哈希表的问题

use*_*358 0 c# hashtable

我试图根据条件动态调用类方法.这就是我这样做的方式

我有三个类实现一个接口

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)

如何更正上面需要将对象添加到哈希表的部分?或者我需要使用不同的方法吗?所有类都在同一个程序集和命名空间中.

谢谢你的时间.

Ode*_*ded 7

猜测一下,你还没有实例化你的_HashT对象.

您需要在代码中的某处(可能是声明或构造函数)来实例化它:

HashTable _HashT = new HashTable();
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,那_HashT将是null一个尝试add,它会失败,NullReferenceException你已经得到了.