gpt4 book ai didi

c# - 使用未知但相似对象的哈希表 (C#)

转载 作者:太空狗 更新时间:2023-10-30 00:17:38 24 4
gpt4 key购买 nike

我有一个哈希表,它可以包含任意数量的对象。所有这些对象都实现了一些相似的方法/属性以及它们自己的一些方法/属性。

例如,哈希表中的所有对象都可能有一个名为 PrintText 的方法,该方法接受一个字符串类型的参数。然而,所有对象都是从不同的类实例化的。

我是否可以在运行前不知道其类型的情况下通过哈希表的键从哈希表中提取特定对象,并访问其所有方法和属性(而不仅仅是常用的)?

通常我会做类似的事情,

MyClass TheObject = MyHashTable[Key];

但是被拉出的对象可以派生自任何类,所以在这种情况下我不能这样做。

最佳答案

您可以定义一个包含通用方法和属性的接口(interface),并在您的所有类中实现该接口(interface)。然后您可以轻松访问这些方法和属性。

但是要访问对象的特定方法(不包含在接口(interface)中),您将需要知道对象的类型。

更新:

从你的问题中不清楚,但是当你写关于哈希表时,我假设你的意思是 Hashtable class .在这种情况下,您应该查看 generic Dictionary class (自 .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"];

关于c# - 使用未知但相似对象的哈希表 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/842298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com