0

我需要访问 COM 对象(iTunes COM 库)中的特定属性。您可以使用 Visual Studio 调试器的动态视图访问此属性。

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];
}
4

0 回答 0