我有一个哈希表,可以包含任意数量的对象.所有这些对象都实现了一些类似的方法/属性和一些自己的方法/属性.
例如,哈希表中的所有对象可能都有一个名为PrintText的方法,该方法采用string类型的单个参数.然而,所有对象都是从不同的类中实例化的.
我是否有可能通过其键从哈希表中提取特定对象而不知道它在运行时的类型,并访问所有自己的方法和属性(而不仅仅是常见的方法和属性)?
通常我会做类似的事情,
MyClass TheObject = MyHashTable [Key];
但是被拔出的对象可以从任何类派生,所以在这种情况下我不能这样做.
您可以定义包含公共方法和属性的接口,并在所有类中实现此接口.然后,您可以轻松访问这些方法和属性.
但是要访问对象的特定方法(不包含在界面中),您需要知道对象的类型.
更新:
你的问题并不清楚,但是当你写一个哈希表时,我认为你的意思是Hashtable类.在这种情况下,您应该看一下通用的Dictionary类(从.NET 2.0开始提供).这个类将使您的代码类型安全,并使您免于大量的类型转换,例如:
IMyInterface a = new MyObject();
// with Hashtable
Hashtable ht = new Hashtable();
ht.Add("key", a);
IMyInterface b = (IMyInterface)ht["key"];
// with Dictionary
var dic = new Dictionary<string, IMyInterface>();
dic.Add("key", a);
 // no cast required, value objects are of type IMyInterface :
IMyInterface c = dic["key"];