我對泛型相當陌生,而且我在理解部分工作方式方面遇到了一些麻煩,並且無法按照自己的方式工作。通用類型,使用接口的不同泛型類型?
到目前爲止,我有這個;
public interface IObjectMapper
{
T MapObject<T>() where T : new();
}
public class CustomObjectMapper : IObjectMapper
{
T IObjectMapper.MapObject<T>()
{
T retObject = new T();
//do stuff......
}
}
這工作正常,但我不明白「T:new()」在做什麼。有人可以解釋嗎?此外,對於我的第二個問題 - 我想要第二個方法稱爲DemapObject,它接受2個參數,來自對象的同一個泛型類型T,然後不同泛型類型的U - U也應該是返回類型。
public interface IObjectMapper
{
T MapObject<T>() where T : new();
U DemapObject<T, U>() ??????? what goes here?
}
最後,一旦我得到DemapObject的接口方法完成 - 它是如何從實現類中調用的?
public class CustomObjectMapper : IObjectMapper
{
NameValueCollection IObjectMapper.DempaObject<T, NameValueCollection>()
{
//is this right????????????
}
}
我不確定我是否正確地問了這個問題,但看着你的代碼,我想你已經解決了它。我試圖創建一個映射對象的接口 - 有點像ORM的東西。 因此,基本上DemapObject方法將採用一個通用對象並去除它的值,將它們填入返回類型並將其吐出。 因此,一個實現可能具有返回類型的DataTable用於DemapObject,而另一個實現可能具有返回類型NameValueCollection。然而,另一個可能會返回一個字符串,其中包含所有值,以便查詢字符串。 – WesleyJohnson 2009-11-18 07:34:44