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

标签 c# generics expression-trees

假设我有:

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/

相关文章:

c# - 创建 lambda 表达式以调用泛型类中的方法

.net - 从一个重要的 IQueryable 编译 Linq 到 SQL 查询

C# 编译器提示之前没有使用局部变量

c# - MassTransit 在 Azure 服务总线上创建队列

java - 继承泛型接口(interface)的子类

c#-4.0 - Expression.Call和 "Ambiguous Match Found"

c# - MVVM 填充组合框(WinRT 和 C#)

c# - 如何在 Visual Studio 中设置条件断点?

java - 如何向此通用集合添加子类型?

java - 使用泛型类执行基本算术运算