Я понимаю, что название может сбивать с толку, поэтому позвольте мне описать проблему. В настоящее время я занимаюсь рефакторингом раздела нашей кодовой базы.
У нас есть несколько классов: скажем, A
, B
, C
. Эти классы в основном похожи и являются легкой целью рефакторинга, за исключением одной строки, с которой я борюсь:
// In Class A
SomeType x = r?.abc?.FirstOrDefault();
// In Class B
SomeType x = r?.def?.FirstOrDefault();
// In Class C
SomeType x = r?.ghi?.FirstOrDefault();
r
- это объект, который заполняется перед этим конкретным оператором. Этот класс имеет несколько членов: abc
, def
, ghi
и т. Д. Каждый из этих классов a
, b
, c
имеет доступ только к одному из них. Как изменить эти утверждения в новом базовом классе, который я пишу?
public class BaseClass {
public T SomeMethod<T>(var param1, var param2, var member) {
// Some processing. `r` gets populated
SomeType x = r?.member?.FirstOrDefault(); // I want to do something like this but obviously this won't work. How to solve this?
}
}