如何判断给定方法/属性的声明位置?

时间:2016-11-30 14:15:37

标签: c# visual-studio

假设我有一个班级(显示为元数据) - 代码位于dll:

class Foo : IA, IB, IC, ID...
{
   public void Bar(); // implementation
}

我想知道这个Bar方法声明 - 在IA,IB或......中的位置......或者它是新的实现 - 没有引用任何外部来源,如MSDN。

我可以在Visual Studio中执行此操作吗?如果是 - 怎么样?

如果这是一个可编辑的文件(就像我自己的代码一样),这很容易 - 只需注释一下此方法,看看哪个界面被标记。

2 个答案:

答案 0 :(得分:1)

如果您希望获取任何> db.dropDatabase() { "dropped" : "test", "ok" : 1 } > db.users.save({"name": "Kevin"}) WriteResult({ "nInserted" : 1 }) > db.users.save({"name": "Matt"}) WriteResult({ "nInserted" : 1 }) > db.users.save({"name": "Sakis"}) WriteResult({ "nInserted" : 1 }) > db.users.save({"name": "Lee"}) WriteResult({ "nInserted" : 1 }) > > db.users.aggregate([{$project: { _id: 0, name: { $substr: [ "$name", 0, 1 ]}}}]) { "name" : "K" } { "name" : "M" } { "name" : "S" } { "name" : "L" } 文件的源代码,则无法使用Visual Studio,但您可以使用反编译工具,如JustDecompliedotPeek等< / p>

但即使使用这些反编译器,也无法保证100%准确地获取源代码。

答案 1 :(得分:0)

从方法中删除单词public,然后逐个放置IA.以及方法名称前面的所有其他接口,然后尝试编译。

 void IA.Bar() {
 }

请注意,多个接口可能都有此方法,因此您可以尝试所有这些方法,或者只是为每个接口粘贴方法的一个副本,并查看哪些方法有效。

(顺便说一句,这就是你如何使用来自两个不同接口的具有相同名称和签名的方法进行不同的实现。前几天我必须使用索引器执行此操作,一个接口应该是只读的另一个读/写。当对象被转换为其中一个接口时,它使用相应的方法。)

或者,ReSharper可以为您完成此操作。只需将方法名称悬停在Resharper on。