В качестве аргумента у метода нужен делегат Func в котором первый параметр - Type не известен:
class MyClass
{
void myMethod(Func<?, bool> func){
//...
}
}
class OtherClass : MyClass
{
int par1;
string par2;
//...
}
Что-бы можно было воспользоваться мои методом следующим образом: OtherClass.myMethod(o=>o.par1 == 10)
Именно класс "OtherClass" должен как-то попасть как аргумент в Func.
В таком случае метод стоит вынести из базового класса в расширение:
static class MyClassExtensions
{
public static void MyMethod<T>(this T obj, Func<T, bool> condition) where T : MyClass
{
// ...
}
}
Если принципиально чтобы метод находился именно в самом классе (например, ему требуется доступ к приватным полям) - надо делать нетипизированный метод в классе и типизированный в расширении:
class MyClass
{
public void MyMethodImpl(Func<MyClass, bool> condition)
{
// ...
}
}
static class MyClassExtensions
{
public static void MyMethod<T>(this T obj, Func<T, bool> condition)
where T : MyClass
=> obj.MyMethodImpl(x => condition((T)x));
}
"Скрыть" MyMethodImpl из контекстной подсказки можно сделав его приватным, а вызывать тогда его придется через еще один статический метод:
class MyClass
{
private void MyMethodImpl(Func<MyClass, bool> condition)
{
// ...
}
public static void MyMethod<T>(T obj, Func<T, bool> condition)
where T : MyClass
=> obj.MyMethodImpl(x => condition((T)x));
}
static class MyClassExtensions
{
public static void MyMethod<T>(this T obj, Func<T, bool> condition)
where T : MyClass
=> MyClass.MyMethodImpl(obj, condition);
}
Или же, если вы делаете библиотеку, можно обойтись internal.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли запихнуть в ProgressBarStep значение типа Double
Есть самый простой ListView в котором 1000+ записейМне нужно использовать это как список Items, чтобы Items не выделялись и при нажатии на стрелки не обводились...