我需要访问 COM 对象(iTunes COM 库)中的特定属性。您可以使用 Visual Studio 调试器的动态视图访问此属性。
我尝试使用反射来获取此属性,但我没有得到任何私有属性或字段。
我可以使用以下行访问在调试器中也看到的所有属性:
new Microsoft.CSharp.RuntimeBinder.DynamicMetaObjectProviderDebugView(myObject).Items
但是,我宁愿不使用此调用,因为我相信存在更简单的解决方案。
如果您安装了 iTunes,这将是我想要实现的一个简单示例:
iTunesAppClass app;
if (Process.GetProcessesByName("iTunes").Any())
{
app = new iTunesAppClass();
}
else
{
return;
}
foreach (IITPlaylist playlist in app.LibrarySource.Playlists)
{
// This does not work. There is no "Parent".
//var parent = playlist.Parent;
Type playListType = playlist.GetType();
// both contain 0 results
var fields = playListType.GetFields(BindingFlags.NonPublic);
var properties = playListType.GetFields(BindingFlags.NonPublic);
// works but only during runtime
//var parent2 = new Microsoft.CSharp.RuntimeBinder.DynamicMetaObjectProviderDebugView(playlist).Items[4];
}