我想访问一个DLL,它支持几个不同成员的不同结构,例如
typedef struct PanTilt
{
float PTCorrectionGradPan0;
float PTCorrectionGradPan90;
} PanTiltValues;
typedef struct NewTime
{
BOOL Day;
BOOL Rainy;
} NewTime;
具有不同名称的不同类型的成员。如何自动从程序集访问它们?我如何解析它们,并在我的C#代码中创建结构以将它们设置为我想要的值? 下面是我的开始,但我得到的最好的是获取一个包含其名称的字符串,但不知道我如何继续创建我自己的那些类型的对象,并有一些解析器告诉我什么成员(的它有哪种类型。
using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
namespace CommandWriter
{
public partial class CommandWriter : Form
{
public CommandWriter()
{
Type[] allCommands = ReadAllCommands();
//InitializeComponent();
}
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
Type[] test = assembly.GetTypes();
return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
}
public Type[] ReadAllCommands()
{
var dllFile = new FileInfo(@"VMSystemTypeLib.Interop.dll");
Assembly vmSystem = Assembly.LoadFile(dllFile.FullName);
Type[] exported = vmSystem.GetExportedTypes().ToArray();
return vmSystem.GetTypes().Where(t => t.Name.StartsWith("DP")).ToArray();
}
}
}