Эти два языка отличны, но они имеют много общего. Много кода C скомпилировало бы очень хорошо на компиляторе C++. На раннем студенческом уровне много кода C++ все еще работало бы над компилятором C.
Примечание, что при некоторых обстоятельствах значение из кода может отличаться очень тонкими способами между этими двумя компиляторами, но я предполагаю это правда при некоторых обстоятельствах даже между различными брендами компилятора C++, если Вы достаточно глупы полагаться на неопределенное или contested/non-conformant поведение.
Finally sorted it, hopefully it'll be of help to someone else!
var type = filter.GetType();
var genericType = typeof(ISearchable<>).MakeGenericType(type);
var searchProvider = _unityContainer.Resolve(genericType);
Почему бы не зарегистрировать ваши типы по имени и не разрешить его таким образом?
Container.RegisterType<ITelescopeView, TelescopeView>("type1");
Container.RegisterType<ITelescopeView, TelescopeView2>("type2");
Container.Resolve(ITelescopeView, "type1");
Если вы хотите, чтобы ваши имена могли быть просто полным именем типа или вы могли бы использовать что-нибудь другое. Подход Дмитрия тоже сработает. Но это может привести к более четкому коду.
How about...
var sp = container.Resolve(
Type.GetType("ISearchable`1[" + yourGenericTypeHere + "]"));