Ответ Криса Москини хорош, когда вы знаете имя метода во время компиляции. Ответ Antamir работает, если мы получим имя метода во время выполнения, но довольно перебор.
Я использую другой способ, для которого я получил вдохновение с использованием отражателя из функции .NET Expression.Call
, которая выбирает правильный общий метод из строки.
public static MethodInfo GetGenericMethod(Type declaringType, string methodName, Type[] typeArgs, params Type[] argTypes) {
foreach (var m in from m in declaringType.GetMethods()
where m.Name == methodName
&& typeArgs.Length == m.GetGenericArguments().Length
&& argTypes.Length == m.GetParameters().Length
select m.MakeGenericMethod(typeArgs)) {
if (m.GetParameters().Select((p, i) => p.ParameterType == argTypes[i]).All(x => x == true))
return m;
}
return null;
}
var m = ReflectionUtils.GetGenericMethod(typeof(Queryable), "Where", new[] { typeof(Person) }, typeof(IQueryable<Person>), typeof(Expression<Func<Person, bool>>));
Если вам нужно только определение общего метода или просто не знаю тип T
в то время, вы можете использовать некоторые фиктивные типы, а затем разделите информацию родословной:
var m = ReflectionUtils.GetGenericMethod(typeof(Queryable), "Where", new[] { typeof(object) }, typeof(IQueryable<object>), typeof(Expression<Func<object, bool>>));
m = m.GetGenericMethodDefinition();
Как указывает rampion, вы все еще можете использовать git rm
для удаления файлов, которые уже были удалены в вашей рабочей копии (например, просто git rm dir / file.js
] в вашем случае.) Если у вас есть много этих файлов, перечисленных как «удалено:» в разделе «Изменено, но не обновлено», я бы сначала проверил, что git ls-files --deleted
создает список эти файлы, и, если да, удалите их с помощью:
git ls-files --deleted -z | xargs -0 git rm
Вы все еще можете git rm
после факта, но если хотите, вы можете восстановить все ваши измененные файлы (включая удаления) до последней ревизии с помощью git reset --hard
Итак, вы хотите подтвердить удаление этих файлов? Затем используйте
git add -u
git commit