2014-12-04 132 views
-1

我有一個從接口IX實現的類;將基礎對象的集合轉換爲子對象的集合

interface IX 
{ 
    Type t; 
    int id; 
} 
class X : IX 
{ 
    public string x; 
    public string y; 
    public string z; 
} 

我收到了IX []的集合。我想寫一個通用的代碼,我可以將類型轉換爲所需的對象,如X到X []的集合。

+1

你的代碼是格式錯誤入手,仍然是無效的,因爲你不能聲明在接口領域。請提供一個*完整的*例子。此外,請解釋您是否確實需要數組(或者您的示例)或其他集合類型。 – 2014-12-04 07:15:52

+0

這些字段基本屬性。我得到一個類型的接口數組。爲了得到一個對象X我需要投射數組中的每一項。所以我需要一個通用的方式來做到這一點。 – Crispin 2014-12-04 07:20:09

+0

如果它們是爲了屬性,你應該*顯示*它們作爲屬性......如果你的問題是針對數組的,你應該*說*它特定於數組而不僅僅是集合。接下來,什麼是創建數組?它實際上是一個'X []',但是你將它作爲一個'IX []'來呈現嗎?你甚至知道每個元素都是'X'引用?鑄造有什麼問題?這裏有很多上下文缺失 - 請閱讀http://tinyurl.com/stack-hints – 2014-12-04 07:25:07

回答

0

你可以使用linq。

IX[] IXes; 
// populating IXes here... 
X[] Xes; 
Xes = IXes.Cast<X>().ToArray(); 

這個過程一般方法將看起來像

static TClass[] Cast<TInterface, TClass>(TInterface[] a) where TClass : TInterface 
{ 
    return a.Cast<TClass>().ToArray(); 
}