我正在研究一个wcf代理生成器,它使用c#动态生成所有方法。我得到以下方法,我只需要选择前两个方法。
反射中的GetMethods()返回我不需要的所有方法(包括ToString,Hasvalue,Equals等)(即由我定义的实际类型)
提前致谢
答案 0 :(得分:1)
如果我理解正确,你需要以下方法:
没有返回类型void
var proxyType = proxyinstance.GetType();
var methods = proxyType.GetMethods()
.Where(x => !x.IsSpecialName) // excludes property backing methods
.Where(x => x.DeclaringType == proxyType) // excludes methods declared on base types
.Where(x => x.ReturnType != typeof(void)); // excludes methods which return void
所有这些条件也可以合并为一个Where
电话:
var methods = proxyType.GetMethods().Where(x =>
!x.IsSpecialName &&
x.DeclaringType == proxyType &&
x.ReturnType != typeof(void)
);