2013-06-20 42 views
0

所以我一直在爲C#開發Neo4jClient庫,並且我對這兩個世界都很陌生。通用對象C#

我有這樣的POCO這裏:

public class SetEntity 
{ 
    public string GUID { get; set; } 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public string CreatedDate { get; set; } 
} 

這個對象類在各種方法中,一個特別爲創建兩個節點之間的關係,但是我必須明確地說,這POCO是用於創建它IRelationshipAllowingSourceNode<SetEntity>IRelationshipAllowingTargetNode<EntityInstance>。以下是處理該問題的整個課程。

class GraphRelationshipEntityInstanceToSetEntity : Relationship, IRelationshipAllowingSourceNode<EntityInstance>, IRelationshipAllowingTargetNode<SetEntity> 
    { 
     string RelationshipName; 

     public GraphRelationshipEntityInstanceToSetEntity(NodeReference targetNode) 
      : base(targetNode) 
     { 

     } 

     public GraphRelationshipEntityInstanceToSetEntity(string RelationshipName, NodeReference targetNode) 
      : base(targetNode) 
     { 
      this.RelationshipName = RelationshipName; 
     } 

     public override string RelationshipTypeKey 
     { 
      get { return RelationshipName; } 
     } 
    } 

有沒有我可以通過<SetEntity>或任何其他物體IRelationshipAllowingSourceNode<Object>的方式。我認爲沒有必要爲與其他節點類型有關係的每個節點類型創建此類。

回答

2

我不熟悉Neo4jclient,但可以評論在c#中的泛型。

在c#中,你可以定義一個接口,據說它有一個開放的泛型類型。也就是說,neo4jclient可能會聲明一個接口IRelationshipAllowingSourceNode<T>,其中某些方法可能使用T /返回T的一個實例。

這被認爲是一個開放泛型類型的接口。

當您實現該接口時,通過指定您正在使用的確切類型來關閉開放泛型類型。但是,您可以讓您的類如下所示使用兩個打開的泛型類型,然後在實例化GraphRelationshipEntityInstanceToSetEntity時關閉泛型類型。見下文。

class GraphRelationshipEntityInstanceToSetEntity<T, T1> : Relationship, IRelationshipAllowingSourceNode<T>, IRelationshipAllowingTargetNode<T1> 
    { 
     string RelationshipName; 

     public GraphRelationshipEntityInstanceToSetEntity(NodeReference targetNode) 
      : base(targetNode) 
     { 

     } 

     public GraphRelationshipEntityInstanceToSetEntity(string RelationshipName, NodeReference targetNode) 
      : base(targetNode) 
     { 
      this.RelationshipName = RelationshipName; 
     } 

     public override string RelationshipTypeKey 
     { 
      get { return RelationshipName; } 
     } 
    } 

看到這裏已經回答了有關仿製藥的另一個問題:

Generics -Open and closed constructed Types

希望這有助於。

Tim

+0

謝謝@Tim的確很有幫助! –