我可以在c#中为接口添加动态方法吗?

本文关键字:动态 方法 添加 接口 我可以 | 更新日期: 2023-09-27 18:01:54

我可以在c#中为接口添加动态方法吗?

接口方法不存在,但存在于底层类中,我想通过接口调用它。

谢谢

我可以在c#中为接口添加动态方法吗?

这就违背了接口的意义。如果你想在某些类而不是其他类上使用它,那么你可以这样实现它,但你必须首先将它强制转换为已知的类类型。

你可以使用一些反射来检查底层类类型是否有你想要调用的方法,如果你真的想要对它很挑剔的话(并且避免知道要转换的类型)

尝试创建一个新接口,实现原始接口,作为类和底层接口之间的"中间人"

public interface IFoo
{
    string PropA { get; set; }
}
public interface IFooExtended
{
    void MyMethod();
}
public class ConcreteFoo : IFooExtended
{
    // implementation...
}

这不是"动态的",但这可能有帮助。

不可以——您可以在接口中添加一个扩展方法来实现类似的目标。

我认为正确的做法是尽可能接近你想要实现的是创建一个继承旧界面的新界面。

类似:

interface IMyInterface : IExistingInterface
{
   void MyCustomMethod();
}

您将在代码中处理您的新接口。实现它的类将具有您的新方法以及继承接口的方法。

你不能改变一个已经存在的接口,那样会违背接口本身的目的。

如果你问你是否想使用动态接口(例如,像Visual Basic中的强类型duck类型),那么no, c#本身不支持这个。但是您可以查看Code Project文章任何。net语言中的动态接口