T>А если я заранее не знаю размер? Только при создании структуры могу узнать, могу ли я это как то в конструкторе указать?
Как выглядит неуправляемая структура? Интересует тип поля, куда потом маршалится string.
Если это LPSTR, то можно попробовать так:
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
struct YOUR_STRUCT
{
[MarshalAs(UnmanagedType.LPStr)]
public String helloStr;
}