【发布时间】:2012-08-13 18:09:32
【问题描述】:
我想创建一个指向位置的指针列表,该位置包含另一个进程的进程内存中的某个值。该值可以是 short、int、long、string、bool 或其他值。
我的想法是为此使用泛型。我在制作时遇到了一个问题,我如何告诉编译器他需要什么类型来转换字节数组?
这是我做的:
public List<IntPtr> ScanProccessFor<T>(T ItemToScanFor)
{
List<IntPtr> Output = new List<IntPtr>();
IntPtr StartOffset = SelectedProcess.MainModule.BaseAddress;
int ScanSize = SelectedProcess.MainModule.ModuleMemorySize;
for (int i = 0; i < ScanSize; i++)
if (ReadMemory(SelectedProcess, StartOffset + i, (UInt16)Marshal.SizeOf(ItemToScanFor)) == ItemToScanFor)
Output.Insert(Output.Count,StartOffset + i);
return Output;
}
如何告诉编译器他需要将 byte[] 转换为 T 类型?
【问题讨论】:
-
你的编译器是“他”? :)
-
@Ed 奇数;当我问我的时,它说“我的名字是军团,因为我们很多”
-
至少 3 个人(包括我自己)编辑了帖子,我们没有更改它 =)
-
@MarcGravell:我真诚地希望我的编译器没有被恶魔感染。 :D
-
我相信他正试图反序列化/复制内存中存在的属于另一个进程的对象。 ReadMemory 正在返回
byte[],OP 希望将byte[]转换为数据所代表的实际对象(T 类型)。