我不知道如何解決通用接口的問題。繼承自通用接口
通用接口表示的對象工廠:
interface IFactory<T>
{
// get created object
T Get();
}
接口代表了計算機廠(計算機類)specyfing總廠:
interface IComputerFactory<T> : IFactory<T>
where T : Computer
{
// get created computer
new Computer Get();
}
通用接口表示特殊的工廠爲對象,這是可複製的,(實現接口System.ICloneable):
interface ISpecialFactory<T>
where T : ICloneable, IFactory<T>
{
// get created object
T Get();
}
類代表工廠計算機(計算機類)和可複製的對象:
class MyFactory<T> : IComputerFactory<Computer>, ISpecialFactory<T>
{
}
我收到編譯器錯誤消息在MyFactory類:
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'exer.ISpecialFactory<T>'. There is no boxing conversion or type parameter conversion from 'T' to 'exer.IFactory<T>'.
The type 'T' cannot be used as type parameter 'T' in the generic type or method 'exer.ISpecialFactory<T>'. There is no boxing conversion or type parameter conversion from 'T' to 'System.ICloneable'.
謝謝你的回答,但它不完全是我想達到的。你能否以MyFactory產生所有可複製對象的方式改變它,而不僅僅是「計算機」對象? – Matt 2013-03-22 14:58:58
@Matt - 對不起,沒有多大意義。如果工廠沒有變得具體化,它是如何知道如何構建某種東西的?即使在您的原始文章'MyFactory'中實現了'IComputerFactory'。你應該更新你的問題,更多的上下文*你想要達到什麼* – Jamiec 2013-03-22 15:24:52
如果工廠沒有變得具體化,它怎麼知道如何構建一些東西?我認爲使用泛型。我的原始帖子MyFactory實現IComputerFactory接口和ISpecialFactory接口。這意味着MyFactory不僅能夠產生Computer類的實例,還能產生所有可克隆類的實例。我認爲可能在myFactory類中使用新方法,例如public T Get {return new T()}。我不知道是否有可能...... – Matt 2013-03-22 15:51:10