public interface IFoo<T> : IBar<T> {}
public class Foo : IFoo<Foo> {}
var implementedInterfaces = typeof( Foo ).GetInterfaces();
foreach( var interfaceType in implementedInterfaces ) {
if ( false == interfaceType.IsGeneric ) { continue; }
var genericType = interfaceType.GetGenericTypeDefinition();
if ( genericType == typeof( IFoo<> ) ) {
// do something !
break;
}
}
Не нанимайте людей, которым вы не можете доверять.
Разбейте приложение на разделы и позволяйте людям работать только над частью приложения, никогда не получая доступа ко всему.
Сделайте это того, чтобы потратить время: вы открываете компанию, нанимаете людей и даете им немного фондовые опционы. Удостоверьтесь, что для них более привлекательно способствовать вашему успеху, чем иначе.
Как насчет того, чтобы сделать их всех счастливыми и показать, что вы цените их работу?
Вы можете обнаружить, что думаете ваш исходный код - ценная часть вашего бизнеса, но вы всегда можете построить его заново. Ваше реальное преимущество перед конкурентами обычно заключается в людях, которых вы нанимаете, и в деловых отношениях, которые вы устанавливаете в ходе естественного ведения бизнеса.
Мое предложение не техническое, а социальное: Сделайте так, чтобы они чувствовали себя хорошо.
У большинства людей есть моральная основа, которая не позволяет им причинять боль другим людям, которые относились к ним с уважением и щедрость.
Существует небольшая вероятность того, что вы закончите наймом психопата, и в этом случае такой подход не сработает - но тогда это, вероятно, будет наименьшей из ваших проблем.
Единственное, что мне приходит в голову, - это заставить их подписать контракт, в котором вы указываете, что если они поделятся каким-либо кодом за пределами проекта, они пойдут на компромисс, чтобы заплатить вам большой сумма денег. Но нет никакой гарантии, что они все равно этого не сделают ..