gpt4 book ai didi

c# - 帮助定义泛型方法以及表达式树参数

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

假设我有:

class Person
{
[ColumnAttribute("ID"]
public int Id;
[ColumnAttribute("Name"]
public string Name;
[ColumnAttribute("DateOfBirth"]
public date BirthDate;
}

我想创建一个如下调用的方法

GetPropertyColumn<Person>(e=>e.Name)

此方法将返回由 ColumnAttribute 属性定义的字符串。
问题是我无法定义此方法。我试过了

public string GetPropertyColumn<T,U>(Expression<Func<T, U>> Lamda)

但问题是我只能指定 T 而不能指定 U,所以它不起作用。
有帮助吗?
谢谢

编辑:

感谢您的回答,但我得到了很多您需要实例化 Person 但我不想这样做的答案。
因为我只想知道给定类内定义的属性的列。

最佳答案

如果您有一个具有 2 个泛型类型(T 和 U)的泛型方法,那么两者都将被指定,或者两者都将被推断。如果这不可能,请考虑使用 Func<T,object> 的表达式(删除 U),并在运行时检查时从表达式树中删除转换/转换节点。您也可以做一些事情来推断这两种类型,但这可能需要更多的重构。

关于c# - 帮助定义泛型方法以及表达式树参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693966/

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