c# - 在另一个类的方法中传递要访问的类的哪个成员
问题描述
我知道标题可能会令人困惑,所以让我描述一下这个问题。我目前正在重构我们代码库的一部分。
我们有一堆类:比如说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?
}
}
解决方案
public class BaseClass
{
protected abstract SomeType GetX(OtherType r);
… SomeType x = GetX(r);
}
public class A
{
protected override SomeType GetX(OtherType r) => r?.abc?.FirstOrDefault();
}
每个类访问 r 的哪个成员是特定于类的行为,并且应该进入每个类。
推荐阅读
- go - 如何使用单独的 API 服务器处理 Nuxt 中的 oauth?
- django - 方法不允许 - Django Rest 框架
- javascript - Vue:在计算属性中避免 TypeError 的最佳方法是什么
- scope - 使用 Jupyter 单元魔法时的环境变量范围
- c# - unity3D ScrollView 动态宽度
- pandas - relativedelta - 根据列值添加月数
- php - 无法获得中间件授权工作
- android - 如何使用上一个和下一个按钮切换片段?
- java - 使用 IText 或 PDFBox 在 java 中的另一个 PDF 文件之间合并 PDF 文件
- c++ - 从在线服务器上的计算机上传文件