2017-04-09 67 views
-1

我有问题。 我有代码: `无法实现接口,其中包含接口

public interface IUpgradeable 
    { 
    IUpgrade UpgradeEntity{ get; } 
    } 

public interface ISomeUpgrade : IUpgrade 
{ 
// ... 
} 

public interface IUpgrade 
{ 
// ... 
} 

public class SomeClass : IUpgradeable 
{ 
public ISomeUpgrade SomeUpgrade { // ...} 
} 
` 

我为什么不能使用?我需要更多的接口,其中implemement IUpgrade ...

+0

如果您有特定错误,请发布。 – OldProgrammer

+0

你不能用什么?它不清楚问题是什么。请澄清。 –

+0

我无法使用IUpgrade上的ISomeUpgrade,甚至是ISomeUpgrade实现IUpgrade。 –

回答

0

您的类必须严格实现接口,您不能更改返回类型,也不能更改属性名称。

如果我理解正确,您真正想要的是实现IUpgradable的类,每个类使用不同的IUpgrade。这可以使用仿制药获得:

public interface IUpgradeable<TUpgrade> where TUpgrade : IUpgrade 
{ 
    TUpgrade UpgradeEntity{ get; } 
} 

public interface ISomeUpgrade : IUpgrade 
{ 
// ... 
} 

public interface IUpgrade 
{ 
// ... 
} 

public class SomeClass : IUpgradeable<ISomeUpgrade> 
{ 
    public ISomeUpgrade UpgradeEntity{ get; } 
} 
+0

谢谢你的男人。名称只是在那里的错字,但在类型我失败了。泛型如果现在是我的最佳选择。 –

0

SomeClassIUpgradeable.UpgradeEntity.get

指定不同的名称,不同的返回类型的属性实现...

你可以做的是

public class SomeClass : IUpgradeable 
{ 
    public IUpgrade UpgradeEntity { get { ... return new CSomeUpgrade(); } } 
} 
+0

嘿,谢谢你的回答。这个名字只是错字。 这就是问题,我返回IUpgrade的“孩子”。它不是okey? –

0

你必须明确地执行UpgradeEntity这样的:

public interface IUpgradeable 
{ 
    IUpgrade UpgradeEntity { get; } 
} 

public interface ISomeUpgrade : IUpgrade 
{ 
    // ... 
} 

public interface IUpgrade 
{ 
    // ... 
} 

public class SomeClass : IUpgradeable 
{ 
    IUpgrade IUpgradeable.UpgradeEntity => SomeUpgrade; 
    public ISomeUpgrade SomeUpgrade { get; } 
}