假设我有:
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),并在运行时检查时从表达式树中删除转换/转换节点。您也可以做一些事情来推断这两种类型,但这可能需要更多的重构。
我是一名优秀的程序员,十分优秀!