我是新來的泛型,需要一些幫助。使用泛型實現接口
我想爲所有「變壓器」類創建一個接口來實現。要成爲「變壓器」,該課程必須至少包含一個變體T mapTo<T>(T t)
。
下面是我想用變壓器:
超載的一些方法...偉大的!看起來很簡單!
public class Transformer : ITransformer
{
public Transformer(IPerson instance)
{
}
public XmlDocument mapTo(XmlDocument xmlDocument)
{
// Transformation code would go here...
// For Example:
// element.InnerXml = instance.Name;
return xmlDocument;
}
public UIPerson maptTo(UIPerson person)
{
// Transformation code would go here...
// For Example:
// person.Name = instance.Name;
return person;
}
}
讓我們使用泛型定義接口:
馬麗娟的想法!
public interface ITransformer
{
T MapTo<T>(T t);
}
問題:
如果我在界面上使用泛型我的具體類實際上就是強制執行下列規定:
public T MapTo<T>(T t)
{
throw new NotImplementedException();
}
這使得類看起來相當醜陋
public class Transformer : ITransformer
{
public Transformer(IPerson instance)
{
}
public XmlDocument MapTo(XmlDocument xmlDocument)
{
// Transformation code would go here...
// For Example:
// element.InnerXml = instance.Name;
return xmlDocument;
}
public UIPerson MapTo(UIPerson person)
{
// Transformation code would go here...
// For Example:
// person.Name = instance.Name;
return person;
}
public T MapTo<T>(T t)
{
throw new NotImplementedException();
}
}
根據你想要的原始問題的代碼'public class Transformer:ITransformer,IT變形器'。這不是問題,但值得指出,因爲在原始問題*中實現的接口不提供任何種類的多態性。 –
2012-07-25 12:20:56
所以每個變壓器必須是唯一的?意思是,我不能簡單地超載? – 2012-07-25 12:25:40