当前位置: 首页 > 知识库问答 >
问题:

如何正确反映基界面方法

赵高韵
2023-03-14
    null
interface IParent
{
     void ParentMethod();
}

interface IChild : IParent
{
     void ChildMethod();
}

class Parent 
{
     public void ParentMethod(){}
}

class Child : Parent
{
     public void ChildMethod(){}
}

void Main()
{
    //investigate derived interface
     Type t = typeof(IChild);
     var info = t.GetMethod("ChildMethod");//ok
     Console.WriteLine(info); 
     info = t.GetMethod("ParentMethod");//returns null!
     Console.WriteLine(info); 
     //investigate derived class
     t = typeof(Child);
     info = t.GetMethod("ChildMethod");//ok
     Console.WriteLine(info);
     info = t.GetMethod("ParentMethod");//ok
     Console.WriteLine(info);
}

请解释这种行为?

是否有任何变通办法来反映基接口的方法从派生接口的类型?

共有1个答案

干亮
2023-03-14

如果处理的是接口,请使用

t.GetInterfaces()

然后可以检查上面返回的类型上的方法

通过名称查找接口成员是不可重复的,请注意,虽然在C#中接口成员不能在实现时重命名,但在CLR中名称可能会被修改。(idisposable.dispose()有时被重命名为Close)。在il中有一个名为.implements的指令,它允许用户更改名称。我相信VB.NET也有这个特性。

 类似资料:
  • 我有以下POJO,可以序列化为字节或。 当试图反序列化正文时,该错误似乎是从请求类生成的: 我怎样才能正确地反序列化地图?

  • 有这个界面 有2个实现,当一个在其实现中不使用变量int ChilLimitPages时。 我的问题是我应该如何使用它?我应该有2个接口吗?可以给我一个默认变量吗?

  • 问题内容: 这是我的代码: 当我运行此代码时,出现以下错误: 为什么会出现此错误? 我该如何解决? 正确的逆转方法是什么? 问题答案: 或者简单地: 将反转您的数据帧,如果您想使循环从下到上,则可以执行以下操作: 要么 因为你得到一个错误首先调用返回6,然后试图调用用于在和第一个电话会; 但在pandas数据框中表示第5列,而没有第5列,因此它将引发异常。(请参阅文档)

  • 问题内容: 我有一个复选框,可以切换某些行为,但是如果有人连续点击100次,我不想向服务器端发送100个请求。 到目前为止,这就是我所准备的(找到以下代码片段): 在我的文档准备功能中: 然后事件本身: 这是因为我将1500毫秒作为去抖动周期,所以如果您在1500毫秒内单击n次,它将仅向服务器发送最新状态。 但是,使用它会有副作用,现在我的其他事件的click事件被搞砸了。我在这里做错什么了吗?有

  • 我正在准备Java认证,显然我不能正确回答这个答案。 给定: 它在第11行独立插入,为Chilis实现equals()和hashCode()契约?(选择所有适用内容。) A。public int hashCode(){return 7;} B。public int hashCode(){return hotness;} C。public int hashCode(){return color.le

  • 问题内容: 我的代码有最后一个问题,涉及反射包中的.Call函数。 所以我在打这样的电话: 我正在执行.Call的方法如下: 我不太了解的是如何操作“ in”变量,以便将需要的映射正确传递到函数中。我看到make()中的第二个参数是参数的长度吗?但是我不太了解如何格式化var以正确传递参数。我递归地遇到错误消息: 任何帮助将非常感激! 问题答案: 来自: 呼叫调用函数与输入参数。例如,如果,代表去