2016-05-05 4 views
0

ich vier Klassen haben wie:Schnittstelle Mit Namen in Schnittstellenelement C#

Author.cs Klasse heißt

public class Author : Interfaces.INode 
{ 
     public int _aID { get; set; } 
     public string _aName { get; set; } 
     public List<CoAuthor> _aCoAuthors { get; set; } 
     public List<Venue> _aVenue { get; set; } 
     public List<Paper> _aPapers { get; set; } 

     public string _aArea { get; set; } 
} 

CoAuthor.cs Klasse heißt

public class CoAuthor : Interfaces.INode 
{ 
     public int _coaID { get; set; } 
     public string _coaName { get; set; } 
     public List<Paper> _coaPapers { get; set; } 

     public string _coaArea { get; set; } 
} 

Venue.cs Klasse heißt

public class Venue : Interfaces.INode 
{ 
    public int _vID { get; set; } 
    public string _vName { get; set; } 
    public List<Paper> _vPapers { get; set; } 

    public string _vArea { get; set; } 
} 

Paper.cs Klasse dh

public class Paper : Interfaces.INode 
{ 
    public int _pID { get; set; } 
    public Author _pAuthor { get; set; } 
    public List<CoAuthor> _pCoAuthors { get; set; } 
    public Venue _pVenue { get; set; } 
    public int _pYear { get; set; } 
    public string _pRField { get; set; } 
} 

Alle diese Klassen eine interface dh Interfaces.INode implementieren, die wie folgt definiert ist:

public interface INode 
{ 
     List<INode> _TargetObject { get; } 
     List<INode> _AttributeObject { get; } 
} 

Jetzt Author.cs Klassentyp ist von _TargetObject dh in INode und alle anderen definiert 3 Klassen sind vom Typ _AttributeObject dh definiert in INode.

Wie kann ich diese Klassen verknüpfen mit entsprechenden INode Mitglieder als zur Zeit, dass nicht klar ist, welche _TargetObject und _AttributeObject sind?

+0

Sie sollten in der Lage sein, den Typ zu überprüfen und es zu werfen. –

+0

@ AllanS.Hansen Wie wird dieses Casting implementiert? Wird es in 'class' oder in' interface' Definitionen sein? – maliks

+1

Was ist der Zweck der Verwendung von 'Interface' Name, d. H.' INode' in Mitgliedern als 'List '? – maliks

Antwort

0

Wie in Kommentar erläutert, empfehle ich Ihnen, bessere Objekte und Trinkgeld zu definieren. In dieser Implementierung haben Sie mehr Kontrolle darüber, welche Typen Target sind und welche Attribute

public interface INode 
{ 
     List<INode> _TargetObject { get; } 
     List<IAttribute> _AttributeObject { get; } 
} 

public interface IAttribute : INode 
{ 

} 

public class Author : Interfaces.INode 
{ 
    private List<INode> _targetList ; 
    private List<IAttribute> _attributeObject ; 
    public Author() 
    { 
     _targetList = new List<INode>(); 
    } 
    //implementazion of _TargetObject INode method 
    public List<INode> _TargetObject 
    { 
     get 
     { 
      return _targetList; 
     } 
    } 
    //implementazion of _AttributeObject INode method 
    public List<IAttribute> _AttributeObject 
    { 
     get 
     { 
      return _attributeObject ; 
     } 
    } 

} 

public class CoAuthor : Interfaces.IAttribute 
{... your class implementation ...} 
public class Venue : Interfaces.IAttribute 
{... your class implementation ...} 
public class Paper : Interfaces.IAttribute 
{... your class implementation ...} 
+0

Was dann in 'öffentliche Schnittstelle IAttribute: INode' Schnittstelle? – maliks

+0

Sie versuchen tatsächlich, die Ziel- und Attributobjekte voneinander zu trennen? Während beide Knoten des gleichen Graphen sind, wird auch hinsichtlich der Implementierung kein Fehler gemacht, da wir hier ein Diagramm implementieren müssen. – maliks

+0

Wie implementieren wir Interface-Member-Listen in Klassen? – maliks

Verwandte Themen