使用Args重载新方法

时间:2015-12-04 03:25:29

标签: vb.net methods reflection

我已经构建了一个大型应用程序,需要使用args重载NEW方法(我猜这是常见的)。

我在某些类中有很多属性,并且大多数(如果不是全部)在新方法中都被重载。我想知道是否有办法从方法中捕获参数,并通过查看properties / args将值分配给自定义对象。类中的所有属性名称都匹配方法中作为args传递的属性名称,因此匹配“name”属性应该是可能的???

或者为每个参数手动输入me.property = arg的一种不那么费力的方式...

例如:

public class myClass
    property arg1 as string
    property arg2 as string
    property arg3 as string

    public sub new(arg1 as string, arg2 as string, arg3 as string)
        For each arg in methodbase.getcurrentmethod.getParameters
            custObj(<property name>).value = arg.value where custObj.name = arg.name
        end for
    end sub
end class

这是无效的VB.net语法只是我想要实现的一个例子。

1 个答案:

答案 0 :(得分:1)

您的问题没有真正的解决方案,因为反射无法获取参数值。但是:

  

你可以通过在里面创建一个匿名类型来解决这个问题   您的方法并利用投影初始化程序。您可以   然后使用反射询问匿名类型的属性。   https://stackoverflow.com/a/1868507/4035472

结果可能是这样的:

String reg = "";
for(String s:targetString.split(' '))
   reg+= s + "(\\s|\\S)*";
//Compile reg as regex and match using pattern