I'm not sure if this is too late, but I have done this on a BBB using mono. You need to look at DLLImport attributes. Basically, you need to write a small C++ file and compile it that contains a custom method that just invokes ioctl() called invoke_ioctl(...) then place the compiled DLL into the /bin directory on your BBB and add this to your C# project code.
[DllImport("pinvoke.dll")]
[SuppressUnmanagedCodeSecurityAttribute()] //Optional, for speed
private static extern int invoke_ioctl(int file_handle, int address);
public static FileStream getI2CStream(byte address)
{
FileStream result = File.Open("/dev/i2c-2", FileMode.Open);
invoke_ioctl(result.SafeFileHandle.DangerousGetHandle().ToInt32(), address);
return result;
}
This will setup ioctl() for the I2C line when writing to that specific I2C address. Just open files for each device on the I2C line. There is probably a C# way to do this too more safely/effectively.