2013-09-25 51 views
0

我想創建一個泛型類,爲多個節點類類型創建節點。 見下面的例子:使用C#泛型類與Neo4jClient

public NodeReference<TObject> CreateObject(TObject objectType) 
     { 
      NodeReference<TObject> nodeReference = 0; 
      nodeReference = clientConnection.Create<TObject> (objectType); 
      return nodeReference; 
     } 

不過,我不斷收到以下錯誤 enter image description here

+0

什麼是TObject? –

+0

我相信它是一個C#中的通用對象,我認爲,我不太確定。看到它被用在書中的一個例子中。 –

回答

2

您可以定義像這樣的方法:

public NodeReference<TObject> CreateObject(TObject objectType) 
    where TObject: class //<-- NEW BIT HERE 
{ 
    NodeReference<TObject> nodeReference = 0; 
    nodeReference = clientConnection.Create<TObject> (objectType); 
    return nodeReference; 
} 

通過把where TObject: class你是說的類型'TObject'必須始終是一個類(或參考類型)。您可能還需要放:

where TObject: class, new() 

,但我不記得 - 在new()位意味着該類必須有一個不帶參數的構造函數(可以是默認的構造函數)。

+0

在錯誤消息中建議您引用類的方式是「where TObject:class」嗎? –

+0

這是一個通用的參數約束。這意味着類型參數必須是引用類型。你的錯誤信息表明你想要一個引用類型。 –

+0

@MikeBarnes是的 - 你有引用類型和值類型,引用類型是類,值類型是類似'int','double'等等。通常 - 如果你可以將它設置爲null('MyObj o = null; '),那麼它是一個引用類型,對值類型做同樣的操作會導致編譯時錯誤('int i = null;')。 –