gpt4 book ai didi

c# - 定义一个 C# 方法,它接受任何可以与方括号一起使用的对象

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:08 24 4
gpt4 key购买 nike

我正在实现一种方法,在给定通过 DataRowView 或 DbDataReader 检索到的一些数据的情况下,合成 DTO。

因此,这两个数据源都实现了通过以下方式检索特定字段值的可能性

public object this[string name] { get; }

但是这种行为不受两个类之间的公共(public)接口(interface)的约束,所以我不能使用它,并且必须在不更改任何一点的情况下编写两次水合代码。这是不好的。

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)

提前致谢!

最佳答案

Am I missing some C# syntax that would allow me to define a single method which constraints the input to any object that can be accessed via square brackets?

没有;除了创建 interface 之外,没有用于表达“可索引的东西”的 C# 语法。使用该索引器,即

interface ISomeInterface {
object this[string name] {get;}
}

并将自己限制在 ISomeInterface 的实例中,或一些通用的 <T>where T : ISomeInterface约束。

关于c# - 定义一个 C# 方法,它接受任何可以与方括号一起使用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55950213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com