在接口成员 C# 中使用接口名称
Using interface name in interface members C#
我有四个 classes:
Author.cs
class 即
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
class 即
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
class 即
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
class 即
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; }
}
所有这些 classes 都在实现 interface
,即 Interfaces.INode
,其定义为:
public interface INode
{
List<INode> _TargetObject { get; }
List<INode> _AttributeObject { get; }
}
现在 Author.cs
class 是 _TargetObject
类型,即在 INode
中定义,所有其他 3 class 都是 [=24] 类型=] 即在 INode
中定义。
我如何 link 这些 class 与相应的 INode
成员,因为目前尚不清楚 _TargetObject
和 [=24] =]?
如评论中所述,我建议您定义更好的对象和小费。在此实现中,您可以更好地控制目标类型和属性
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 ...}
我有四个 classes:
Author.cs
class 即
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
class 即
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
class 即
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
class 即
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; }
}
所有这些 classes 都在实现 interface
,即 Interfaces.INode
,其定义为:
public interface INode
{
List<INode> _TargetObject { get; }
List<INode> _AttributeObject { get; }
}
现在 Author.cs
class 是 _TargetObject
类型,即在 INode
中定义,所有其他 3 class 都是 [=24] 类型=] 即在 INode
中定义。
我如何 link 这些 class 与相应的 INode
成员,因为目前尚不清楚 _TargetObject
和 [=24] =]?
如评论中所述,我建议您定义更好的对象和小费。在此实现中,您可以更好地控制目标类型和属性
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 ...}