Windows で正常に動作する DLL を取得しましたが、そのプライベート関数の 1 つの内部で、静的な System.IO.File.ReadAllBytes() が呼び出されます。Compact Framework 3.5 を使用する Windows CE スマート デバイス プロジェクトでこの DLL を使用する必要がありますが、System.IO.File にはそのようなメソッドはありません。次のように、プロジェクト内に「File」という名前のクラスを作成しようとしました。
public class File
{
internal static byte[] ReadAllBytes(string path)
{
}
internal static void WriteAllBytes(string path, byte[] bytes)
{
}
}
クラス File の静的メソッドへの私自身の呼び出しはここにリダイレクトされますが、DLL メソッド内の呼び出しは引き続き System.Io.File クラスに送られ、MissingMethodException が引き続き発生します。public 修飾子を使用してメソッドを試しましたが、変化は見られませんでした。
ReadAllbytes が呼び出され、MethodInfo.Invoke を使用したプライベート メソッドを呼び出すパブリック メソッドを書き直そうとしましたが、成功しませんでした。
質問: Dll 内のメソッドが System.File.IO.ReadAllBytes() の代わりに ReadAllbytes メソッドを受け入れるようにする方法はありますか? DLL 内の呼び出しは次のようになります。
using System.IO.File;
namespace Something
{
class SomeClass
{
public Boolean someMethod()
{
byte[] myBytes = File.ReadAllBytes(filePath);
}
}
}