Тип функции, возвращающий IFoo, отличается от типа, возвращающего * Foo, даже если Foo соответствует требованиям для IFoo, Go не поддерживает ковариацию для возвращаемого типа.
Вам нужно будет обернуть функцию
var factoryFn = func(v int) IFoo { return CreateFoo(v) }
Я не могу на самом деле сказать, но существует следующее видео Канала 9.
Существуют некоторые детали реализации и немного о структуре API. И я верю, чтобы помнить, что они упомянули, как теневые копии отображаются в файловую систему.
Если Вы имеете контроль над первым процессом, можно указать тип доли дескриптора файла
string contents1;
string contents2;
using (FileStream fs1 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (var tr1 = new StreamReader(fs1))
{
using (FileStream fs2 = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (var tr2 = new StreamReader(fs2))
{
contents2 = tr2.ReadToEnd();
contents1 = tr1.ReadToEnd();
}
}
}
}
Console.WriteLine(contents1);
Console.WriteLine(contents2);