我想列出指向另一个进程的进程内存中包含某个值的位置的指针.值可以是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;
}
Run Code Online (Sandbox Code Playgroud)
如何告诉编译器他需要将byte []转换为T类?
你的问题有点令人困惑,但我会尽力回答
我可能会编写一个方法,该方法采用接口之类的实例,IConvertableToByteArray而不是采用泛型类型。
public IConvertableToByteArray
{
public byte[] ToByteArray();
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您需要允许特定类型与该方法兼容,您可以创建一个封装类
public IntConvertableToByteArray : IConvertableToByteArray
{
public int Value{get; set;}
public byte[] ToByteArray()
{
insert logic here
}
}
Run Code Online (Sandbox Code Playgroud)