gpt4 book ai didi

c# - T 不包含 RowKey 的定义

转载 作者:太空狗 更新时间:2023-10-29 22:04:48 28 4
gpt4 key购买 nike

我正在尝试创建一个通用类:

public class ClassName<T>
{
public T AccessEntity(string id)
{
return (from e in ServiceContext.CreateQuery<T>(TableName)
where e.RowKey == id // error here!
select e).FirstOrDefault();
}
}

在这段代码中我得到的错误是:

T does not contain the definition for RowKey

但在运行时将替换 T 的参数具有 RowKey 的定义。也许是因为编译器在编译时没有在 T 中获取 RowKey 的定义,这就是我收到此错误的原因。谁能告诉我如何解决这个问题?

最佳答案

为此,您需要一个接口(interface)约束:

interface IHazRowKey {
string RowKey { get; }
}

并指定此限制:

public class classname<T> where T : IHazRowKey {...}

并在每个实现上指定: IHazRowKey:

public class Foo : IHazRowKey {....}

现有的 RowKey 成员应该匹配它(假设它是一个属性,而不是一个字段),所以您不需要添加任何其他额外的代码。如果它实际上是一个字段(它不应该是,IMO)那么:

public class Foo : IHazRowKey {
string HazRowKey.RowKey { get { return this.RowKey; } }
...
}

关于c# - T 不包含 RowKey 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614875/

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