【发布时间】:2014-07-30 10:45:42
【问题描述】:
例如
public class UserInfo {}
public interface IUser
{
UserInfo Get(int id);
string GetData(int id);
}
public class User : IUser
{
public UserInfo Get(int id)
{
return null;
}
public virtual string GetData(int id)
{
return null;
}
}
我尝试了以下方法,但两种方法都返回 true。
MethodInfo[] methods=typeof(User).GetMethods();
foreach(MethodInfo method in methods)
{
if(method.IsVirtual)
{
Console.WriteLine(method.Name);
}
}
预期输出
GetData
实际输出
Get
GetData
此链接有些相似,但在我的情况下不起作用: use-reflection-to-find-all-public-virtual-methods-and-provide-an-override
【问题讨论】:
-
Works for me。你能提供一个真实的、最小的、可编译的、可运行的例子吗?
-
确实,我必须做很多事情来测试原始问题:1)添加一个 UserInfo 类。 2) 添加一个 IUser 类。 3) 修复“P”是公开的。 4) 使用
typeof(User)而不是typeof(Base)。这些都不是回答问题的人应该做的事情。以后请提供简短但完整的代码示例。
标签: c# reflection virtual