c# - 定义一个 C# 方法,该方法接受任何可与方括号一起使用的对象
问题描述
我正在实现一种方法,给定通过 DataRowView 或 DbDataReader 检索到的一些数据,水合 DTO。
因此,两个数据源都实现了通过以下方式检索特定字段值的可能性
public object this[string name] { get; }
但是这种行为不受两个类之间的公共接口的限制,所以我不能使用它,并且必须编写两次水合代码而不改变一个位。哪个不好。
public MyDTO Hydrate(DataRowView data)
{
MyDTO f_return = new MyDTO();
f_return.Foo = (string)data["foo"];
f_return.Bar = (uint)data["bar"];
f_return.Baz = (DateTime)data["baz"];
return f_return;
}
public MyDTO Hydrate(DbDataReader data)
{
MyDTO f_return = new MyDTO();
f_return.Foo = (string)data["foo"];
f_return.Bar = (uint)data["bar"];
f_return.Baz = (DateTime)data["baz"];
return f_return;
}
我是否遗漏了一些 C# 语法,它允许我定义一个方法,该方法将输入限制为可以通过方括号访问的任何对象?
像这样的东西
public MyDTO Hydrate(object[string] data)
提前致谢!
解决方案
我是否遗漏了一些 C# 语法,它允许我定义一个方法,该方法将输入限制为可以通过方括号访问的任何对象?
不; 除了使用该索引器创建一个之外,没有用于表达“可索引的东西”的 C# 语法interface
,即
interface ISomeInterface {
object this[string name] {get;}
}
并将自己限制为 的实例,或具有约束的ISomeInterface
一些泛型。<T>
where T : ISomeInterface
推荐阅读
- c# - .net core 2.0 与 dbcontext 的范围问题
- java - 确保文本文件包含在 JAR 中
- python - 在遗留数据库表中注册用户
- mongodb-query - 尝试使用 $lookup 从同一数据库的两个集合中检索数据
- mongodb - 在 MongoDB 中,因果一致的会话是否受制于可能回滚的读取数据?
- html - 位置:粘性滚动仍然移动的元素
- java - 具有两个相同类型的 bean 的 Spring 配置 xml 文件 NoUniqueBeanDefinitionException
- json - SQL JSON 函数
- python - 在 matplotlib 中调整刻度时标签丢失
- c++ - c++ 文件指针的 Node-FFI 引用类型是什么?