繁体   English   中英

如何使用带接口的方法

[英]How to use an interface with method

我不确定我使用的术语是否正确,但是基本上我想要这样的东西。

public interface IMovements
{
    Boolean Run(string mammal);
}
public MovementService: IMovement
{
    public Boolean Run(string mammal)
    {
       if(mammal == human)
       {
         Console.WriteLine("Human is now running");
         return true;
       }
       else
       {
         Console.WriteLine("This creature can't run");
         return false;
       }
    }
}

然后在主类中,我只想调用接口来执行运行操作。

[Dependency]
IMovement Mov {get; set; }

//Do something with Mov
Mov.Run("Human");

Move.Run("Worm");

输出将是:

Human is now running
This creature can't run

如果您想将依赖项作为接口注入,则可以选择以下选项

  • 传递接口的构造函数注入,像Ninject这样的依赖注入框架将为您实例化它
  • 您所描述的属性注入。 Microsoft的MEF可以使用[Import]属性来执行此操作。 以及带有[Dependency]属性的Unity。

这似乎是关于经典接口的误解。 一段历史:.NET的设计师希望避免当时很多常见的问题。

多重继承会导致钻石问题 ,这是他们想要解决的问题之一。 因此,他们决定:在.NET中,将只有“单一继承”。

但是单继承有它自己的一系列问题,因此他们需要发明接近多继承的东西,而不产生钻石问题。 接口是解决方案。

接口-缺乏更好的术语-比抽象类更抽象。

  • 摘要类可能包含也可能不包含代码。 这取决于程序员编写它
  • 接口永远无法添加代码

您只能将一个抽象cals放入继承链。 但是您可以在其中放置任意数量的接口。 由于它们缺少功能实现,因此它们永远不会引起钻石问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM