我想从一个类实例自动生成SQL语句。该方法应该看起来像Update(object[] Properties, object PrimaryKeyProperty)。该方法是实例的一部分(类,基础方法-适用于任何子项)。属性数组是一组将用于更新语句中的类属性数组。属性名等于表字段名。
问题是我无法获取属性名称。
是否有任何选项可以在类实例内获取属性名称? 示例:
public class MyClass {
public int iMyProperty { get; set; }
public string cMyProperty2 { get; set; }
{
main() {
MyClass _main = new MyClass();
_main.iMyProperty.*PropertyName* // should return string "iMyProperty"
{
我知道PropertyInfo,但不知道如何从GetProperties()数组中获取属性的ID。
有什么建议吗?
MembersOf.GetName<T>(Expression<Func<T,Object>> expr)
替换MembersOf<T>.GetName<R>(Expression<Func<T,R>> expr)
,这样更简单,而且你不需要一个特定的 R 类型(即使它在编译时被推断出来)。 - Yves M.public string MyFunction<T,R>(Expression<Func<T, R>> expr){return new MembersOf<T>().GetName<R>()}
。T和R不再分开,当使用MyFunction<T,R>时,R无法被推断。但是,如果您将R替换为Object,则无需进行任何技巧来方便推断。 - Yves M.<T,R>
表示“任何T和任何R”,而<T,Object>
可能意味着“任何T和一个向下转型/装箱对象”。您的观点可能通过<T,dynamic>
签名更好地传达。无论如何,这些都是非常小的考虑因素 - 我甚至可能不会在代码审查中提到它们。 - George Mauer