C#引用的对象集

Cud*_*nny 2 .net c# collections set

我想要的是一个由他们的类引用的对象的唯一集合或集合.该集合只能包含给定类的一个对象.以下是一些可能的功能示例:

class A;
class B;
class C;

A a = new A();
B b = new B();
C c = new C();

UnknownCollection<object> objects;
objects.Add(A, a);    // Add(key, value)
objects.Add(B, b);
objects.Add(C, c);
var something = objects[A]; // return a reference to 'a' using class A as a key
Run Code Online (Sandbox Code Playgroud)

如果这些行中的某些内容尚不存在,是否可以创建一个具有合理性能的方法?

Jon*_*eet 7

听起来你真的想要一个Dictionary<Type, object>你填充的:

objects.Add(typeof(A), a);
objects.Add(typeof(B), a);
objects.Add(typeof(C), a);
...

A a = (A) objects[typeof(A)];
Run Code Online (Sandbox Code Playgroud)

如果字典始终将类型映射到该类型的实例,则可以封装该类型,以便保持API清洁.您总是知道强制转换是可行的,因为唯一可以添加到字典的代码可确保该类型始终正确.

编辑:啊哈 - 事实证明我在2008年发表了关于此的博客.

  • @cdhowie:我会将它封装在一个单独的类型中,而不是让任何东西得到它. (2认同)