0

好的,我有一个接口,让我们调用它

public interface bar {
     string Foo;
}

还有一个实现接口的类

public fooBar : bar {
   public string Foo {get; set;}
}

然后我有一个属性挂在另一个对象上,该对象包含一个包含不同实现的接口“栏”列表,就像这样,

public list<bar> listOfBars;

现在,当我像这样使用表达式树/函数时

function(parentObj x) { x.listOfBars(0).Foo;}

我可以从表达式树中获取成员信息。memberinfo 虽然指向接口方法,但它的类是接口。这几乎可行,但我需要知道它的父类是什么,所以我需要从 memberinfo 对象中找到并查看它从“bar”接口调用方法,并且类类型是“fooBar”。有没有办法做到这一点,我已经在监视窗口中挖掘了 memberinfo 对象并且无法访问父类型。不过,我可能会遗漏一些东西。

4

1 回答 1

0

我认为您对某些概念感到困惑。当您实现一个接口时,您实际上并没有从该接口派生您的类。你实际上是在这样做:

public class fooBar : object, Foo { }

您的类将从一个对象派生并实现接口 Foo。类只能从一种对象类型派生,但可以实现多个接口。

您将遇到的另一个问题是接口不能包含字段。你需要改变这个:

public interface bar {string Foo;}

对此

public interface bar {string Foo {get;set;} }

现在,假设您更改了所有这些项目,您可能需要查看 IS 关键字。您可以通过执行以下操作来检查类是否实现了接口:

object o = new object();
if(o is bar) {
  //do interface bar stuff here
}
于 2009-08-21T19:16:52.210 回答