2

我有一种情况,我有几个课程有共同点和独特点。我想创建一个类型比 object[] 更强的类,但可以包含任何其他类。

如果我有例如:

class MyType1
{
   string common1;
   string common2;
   string type1unique1;
   string type1unique2;

   //Constructors Here 
}

class MyType2
{
   string common1;
   string common2;
   string type2unique1;
   string type2unique2;

   //Constructors Here 
}

我想创建一个类似的类:

class MyObject
{
   string common1;
   string common2;

   //Code Here 
}

所以我创建了类似的东西:

Dictionary<int, MyObject>

这将保存 MyType1 或 MyType2 但不保存 string 或 int 或字典将保存的任何其他内容。存储在那里的 MyObjects 需要能够在以后重新转换为 MyType1 或 MyType2 才能访问下面的唯一属性。

如果我可以在不重铸的情况下访问 MyObject.common1 或 MyObject.common2,那就太好了。

4

1 回答 1

14
public abstract class MyObject {
 protected string common1; 
 protected string common2;
}

public class MyType1 : MyObject {
 string type1unique1; 
 string type1unique2;
}

public class MyType2 : MyObject {
 string type2unique1; 
 string type2unique2;
}

IDictionary<int, MyObject> objects = new Dictionary<int, MyObject>();
objects[1] = new MyType1();
objects[1].common1
if(objects[1] is MyType1) {
    ((MyType1)objects[1]).type1unique1
}
于 2011-01-17T05:40:43.357 回答