This method will append all text from the original file to the destination file.
While this is a very easy task, the method shows many of the things you come across when you are working with files in AX, like:
- Using the #File macro
- Asserting FileIOPermission to be able to access files
- Asserting InteropPermission to be able to use .NET Interop
- Using a set to assert multiple permissions at once
- Using .NET Clr Interop in AX (better than winapi and winapiserver)
- Optional cleaning up after you’re done using reverAssert()
void AppendFileToFile(FileName original, FileName distination)
{
#File
FileIOPermission FileIOPermissionA = new FileIOPermission(distination, #io_append);
FileIOPermission FileIOPermissionR = new FileIOPermission(original, #io_read);
InteropPermission InteropPermission = new InteropPermission(InteropKind::ClrInterop);
Set permissionset = new set(types::Class);
;
// create permissionset
permissionset.add(FileIOPermissionA);
permissionset.add(FileIOPermissionR);
permissionset.add(InteropPermission);
// assert permissions
CodeAccessPermission::assertMultiple(permissionset);
// append text from source file to destination file
System.IO.File::AppendAllText(distination, System.IO.File::ReadAllText(original));
// limit the scope of the assert
CodeAccessPermission::revertAssert();
}
While this is a very easy task, the method shows many of the things you come across when you are working with files in AX, like:
- Using the #File macro
- Asserting FileIOPermission to be able to access files
- Asserting InteropPermission to be able to use .NET Interop
- Using a set to assert multiple permissions at once
- Using .NET Clr Interop in AX (better than winapi and winapiserver)
- Optional cleaning up after you’re done using reverAssert()
void AppendFileToFile(FileName original, FileName distination)
{
#File
FileIOPermission FileIOPermissionA = new FileIOPermission(distination, #io_append);
FileIOPermission FileIOPermissionR = new FileIOPermission(original, #io_read);
InteropPermission InteropPermission = new InteropPermission(InteropKind::ClrInterop);
Set permissionset = new set(types::Class);
;
// create permissionset
permissionset.add(FileIOPermissionA);
permissionset.add(FileIOPermissionR);
permissionset.add(InteropPermission);
// assert permissions
CodeAccessPermission::assertMultiple(permissionset);
// append text from source file to destination file
System.IO.File::AppendAllText(distination, System.IO.File::ReadAllText(original));
// limit the scope of the assert
CodeAccessPermission::revertAssert();
}