相关疑难解决方法(0)

强在.NET中键入属性名称

假设我有一个属性有一个属性

Public Class MyClass
   Public Property MyItem() as Object
      ....
   End Property
End Class
Run Code Online (Sandbox Code Playgroud)

我必须将属性的名称传递给函数调用.(请不要问为什么要这样做,它是第三方框架).例如

SomeFunc("MyItem")
Run Code Online (Sandbox Code Playgroud)

但我想要做的是,将字符串更改为强类型参数.这意味着,如果重命名或更改属性名称,也应该在此处反映出来.

所以这种类型的东西:

Dim objectForStrongTyping as New MyClass()
SomeFunc(objectForStrongTyping.MyItem().Name())
Run Code Online (Sandbox Code Playgroud)

我相信这不会奏效.有没有办法可以完成这种强力打字?(C#或VB.NET,任何事情都很酷)

.net c# vb.net strong-typing

10
推荐指数
2
解决办法
3556
查看次数

C#传递强类型属性名称列表

我正在寻找一种方法将强类型属性名称列表传递到一个方法,然后我可以解析并获取调用者感兴趣的属性.我想这样做的原因是有一个复制方法,仅复制用户指定的字段.现在,该方法采用一个字符串列表与Getvalues一起使用,并在反射中获取属性方法,但我想防止重构属性和开发人员未更新的字符串.

我在这里发现了这篇文章,但不幸的是,它没有列表.我可以这样做:

public static void Copy(Expression<Func<TObject>> propertiesToCopy )
{
}
Run Code Online (Sandbox Code Playgroud)

然后让来电者做

PropertyCopier<List<string>>.Copy(() => data);
Run Code Online (Sandbox Code Playgroud)

但是我必须指定调用者可以拥有的属性数量:

public static void Copy(Expression<Func<TObject>> propertiesToCopy,Expression<Func<TObject>> propertiesToCopy2, Expression<Func<TObject>> propertiesToCopy3 )
{
}
Run Code Online (Sandbox Code Playgroud)

这将允许三个属性.无论如何将它添加到List或Queryable <>以允许与调用者想要的属性一样多?我尝试使用Add in List并使用Expression

提前致谢

编辑:今晚我找到了一些文章,提到使用C#param关键字来实现这一目标.有没有更好或更有效的方法,或者这是最好的方法吗?

c# generics lambda generic-list

5
推荐指数
1
解决办法
1477
查看次数

标签 统计

c# ×2

.net ×1

generic-list ×1

generics ×1

lambda ×1

strong-typing ×1

vb.net ×1