Вот простой пример:
[ComVisible(true)]
public interface IInterface
{
[return: MarshalAs(UnmanagedType.Interface)]
IInterface1 GetObject();
}
Объект IInterface1 создается только в управляемой среде и используется как управляемым так и в неуправляемым кодом.
Вообщем для неуправляемого кода в таком случае это опасный маршалинг? Имеется ввиду влияние мусоросборщика!!!
Если все таки мусоросборщик может поменять адресное пространство объекта, то ниже написанная конструкция решит проблему?
IInterface1 obj = new ...
GCHandle objHandle = GCHandle.Alloc(obj, GCHandleType.Normal);