如何在.NET 3.5实现动态特性

3

如何在没有dynamic关键字的.NET 3.5中实现此行为。

Guid CLSID_ShellApplication = new Guid("13709620-C279-11CE-A49E-444553540000");
Type shellApplicationType = Type.GetTypeFromCLSID(CLSID_ShellApplication, true);
dynamic shellApplication = Activator.CreateInstance(shellApplicationType);
dynamic windows = shellApplication.Windows();

for (int i = 0; i < windows.Count; i++)
    windows.Item(i).Refresh();

我尝试使用

MethodInfo windowsMethod = shellApplicationType.GetMethod("Windows");

但是GetMethod返回null


1
你需要在方法调用中添加BindingFlags,这样它就知道要查找哪种类型的方法。例如,BindingFlags.Public和BindingFlags.Instance。 - J. Steen
你可以通过反射来实现,但这会使代码变得更长。为了给你提供解决方案,我需要看看你的目标类型是什么。 - Kirill Bestemyanov
Pranay Rana:var 不起作用,因为 var 是隐式类型。 --> 编译器将其转换为显式类型,但您只需要编写较少的代码。 - fixagon
当您使用调试器查看shellApplicationType时,它的类型是否正确? - fixagon
BindingFlags.Public和BindingFlags.Instance不起作用。 - bbonch
显示剩余4条评论
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接