我有一個看起來像這樣的接口:必須實現接口A或接口B(只有一個)
public interface IOpportunity
{
string Name { get; }
string Description { get; }
ILocation Location { get; }
}
public interface ILocation : IHierarchicalEntity
{
int OpptyCount { get; }
}
public interface IHierarchicalEntity
{
string SID { get; }
string Name { get; }
}
不過,我想ILocation對象,也能實現這些接口中的一個:
public interface IHierarchicalEntityWithParentNames : IHierarchicalEntity
{
/// <summary>
/// Returns the lowest level that this heirarchy goes (0 for a flat hierarchy, 1 for a two-level etc.)
/// </summary>
int LeafLevel { get; }
/// <summary>
/// Returns the name of the Segment for the given level (0 for a root node, n for leaf node, where n = LeafLevel)
/// </summary>
/// <param name="level"></param>
/// <returns></returns>
string GetNameForLevel(int level);
}
public interface IHierarchicalEntityWithParentIds : IHierarchicalEntity
{
IHierarchicalEntityWithParentIds ParentEntity { get; }
string ParentSID { get; }
}
由於我寫的代碼的性質,我不能將這些接口組合成具有某種GetParent
方法
在代碼一個接口,消耗這些接口,我有兩個類 - 一個消耗ILocation對象如果它是IHierarchicalEntityWithParentNames
和另一個如果它是IHierarchicalEntityWithParentIds
我將如何佈局接口(也許我必須有一些抽象類)來支持有這個「一個或另一個」的設計?
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-03-11 17:12:44