MasterClass
在工作類型集合類的基類,從這個Attachvariable
繼承。 Table
存儲MasterClass對象。繼承基類的集合
public class Table
{
private Dictionary<int, MasterClass> map = new Dictionary<int, MasterClass>();
public bool isInMemory(int id)
{
if (map.ContainsKey(id))
return true;
return false;
}
public void doStuffAndAdd(MasterClass theclass)
{
theclass.setSomething("lalala");
theclass.doSomething();
map[theclass.id] = theclass;
}
public MasterClass getIt(int id)
{
return map[id];
}
}
所以,現在出現這種情況:
Table table = new Table();
if (!table.isInMemory(22))
{
Attachvariable attachtest = new Attachvariable(22);
table.doStuffAndAdd(attachtest);
Console.WriteLine(attachtest.get_position()); //Get_position is a function in Attachvariable
}
else
{
Attachvariable attachtest = table.getIt(22); //Error: Can't convert MasterClass to Attachvariable
Console.WriteLine(attachtest.get_position());
}
有什麼辦法使之與從MasterClass
繼承任何類Table
工作,不知道有關這個類的實存了前面,這樣我還是可以使用doStuffAndAdd(MasterClass theclass)
並且還使用Attachvariable
作爲getIt()
的返回類型。
我不能使用Table<T>
因爲那時doStuffAndAdd不能大師班對象添加到字典中。沒有辦法檢查T是否繼承了MasterClass,所以這並不令人驚訝......我該怎麼做這項工作?
public class Table<T>
{
private Dictionary<int, T> map = new Dictionary<int, T>();
public bool isInMemory(int id)
{
if (map.ContainsKey(id))
return true;
return false;
}
public void doStuffAndAdd(MasterClass theclass)
{
theclass.setSomething("lalala");
theclass.doSomething();
map[theclass.id] = theclass; //Error: can't convert MasterClass to T
}
public T getIt(int id)
{
return map[id];
}
}
如果您做些什麼' Attachvariable attachtest = new MasterClass(22);'代替? – MyCodeSucks
@KevinH。不,那不會編譯。 –