Одна реализация этой проблемы должна попытаться вызвать конструктора без параметров Типа:
public static object GetNewObject(Type t)
{
try
{
return t.GetConstructor(new Type[] { }).Invoke(new object[] { });
}
catch
{
return null;
}
}
Вот тот же подход, содержавшийся в общем методе:
public static T GetNewObject<T>()
{
try
{
return (T)typeof(T).GetConstructor(new Type[] { }).Invoke(new object[] { });
}
catch
{
return default(T);
}
}
Я думаю, вы должны использовать MonoDevelop , IDE, в отличие от самого Mono.
Да, MonoDevelop использует gcc / g ++ для компиляции исходного кода C / C ++ , но он не скомпилирован в CIL - он скомпилирован в собственный двоичный файл.
Если я правильно понимаю, тогда вы сможете использовать ускорение.
Если, однако, вы спрашиваете, есть ли у Mono поддержка сборок или исполняемых файлов в смешанном режиме (например, сборки / exe, содержащие как собственный, так и .NET CIL), то я с сожалением сообщаю вам, что эта функция не поддерживается, а также не компилирует C ++ в чистый CIL с помощью Mono.
Если вам не нужен смешанный режим (т. Е. Забудьте собственный part and go for CIL-only), mono действительно работает с кодом C ++ (я слышал, что они теперь экспериментально поддерживают смешанный режим, особенно в Windows, и где-то еще через Wine, но я думаю, что эта часть НЕ готова к использованию в прайм-тайм). Единственный хорошо поддерживаемый компилятор C ++ в настоящее время - это Microsoft C ++ / CLI на платформах Net 2.x; (уже много лет) прилагаются усилия по добавлению gcc, но я пока не знаю ни одного готового к эксплуатации результата: - (.