我想从类实例中自动生成SQL语句.该方法应该看起来像Update(object []属性,对象PrimaryKeyProperty).该方法是实例的一部分(类,基本方法 - 任何子代的通用).属性数组是类属性的数组,将在update语句中使用.属性名称等于表字段名称.
问题是我无法获得属性名称.
有没有选项在类实例中获取属性名称?样品:
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"
{
Run Code Online (Sandbox Code Playgroud)
我知道PropertyInfo,但我不知道从GetProperties()数组中获取属性的ID.
有什么建议吗?
Geo*_*uer 28
上周二为我们的用户组编写了一个关于lambda的演示文稿.
你可以做
MembersOf <Animal> .GetName(x => x.Status)
要么
var a = new Animal()a.MemberName(x => x.Status)
代码:
public static class MembersOf<T> {
public static string GetName<R>(Expression<Func<T,R>> expr) {
var node = expr.Body as MemberExpression;
if (object.ReferenceEquals(null, node))
throw new InvalidOperationException("Expression must be of member access");
return node.Member.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
Meh*_*ANI 10
我在This Post找到了一个完美的解决方案
public static string GetPropertyName<T>(Expression<Func<T>> propertyExpression)
{
return (propertyExpression.Body as MemberExpression).Member.Name;
}
Run Code Online (Sandbox Code Playgroud)
然后用于:
var propertyName = GetPropertyName(
() => myObject.AProperty); // returns "AProperty"
Run Code Online (Sandbox Code Playgroud)
奇迹般有效
你可以这样做:
Type t = someInstance.getType();
foreach (MemberInfo mi in t.GetMembers())
{
if (mi.MemberType == MemberTypes.Property)
{
Console.WriteLine(mi.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
获取所有类型的属性名称instance.