所以我一直在寻找大约一个星期,试图弄清楚如何做到这一点。在收集一些我不知道的东西时,我找到了一个相对简单的解决方案。
我认为原始海报正在寻找这样的东西,因为如果您必须使用类名来找出类名,那有什么意义..
对于那些说“不可能”和“你为什么要......”的人,我特别的原因是一个类库,我有一个类,应用程序开发人员可以随意调用实例,它意味着有多个实例用不同的名字。所以我需要一种能够识别这些实例的方法,以便我可以针对具体情况使用正确的实例。
public static List<Packet> Packets = new List<Packet>();
public class Packet
{
public Packet(string Name)
{
Packets.Add(this);
name = Name;
}
internal string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
}
它确实需要它们传递实例的名称,因为我还没有弄清楚如何从构造函数内部获取它们正在使用的名称。这很可能是不可能的事情。
public Packet MyPacket = new Packet("MyPacket");
这将创建实例,将对其的引用存储在 Packets 中,并将其名称保存在新创建的实例中。
获取与数据包关联的名称并将其连接到变量..
Packet NewName = Packets[Packets.FindIndex(x => x.name == "MyPacket");
无论您使用相同的变量名还是新的变量名并不重要,它只是将您想要的实例链接到它。
Console.WriteLine(NewName.name); // Prints MyPacket
对于具有相同名称的实例,您必须想出一些其他方法来区分它们,这需要另一个列表和一些逻辑来确定您想要哪个。