![]() |
1
1
我认为你有两个主要的选择:
我知道你已经说过你没有做选项1,但是从调用函数的角度来看,这会有所帮助。 选项2是处理这种情况的更“通用”的方法,假设所有值都可以由字符串表示并从字符串转换为适当的类型。当然,只有当您真正控制被调用方法的定义时,这才有帮助。 |
![]() |
2
2
好吧,问题的范围改变了,但我最初的观察和对其他解决方案的反对仍然存在。 我认为你不/不想在这里使用“仿制药”。您提前不知道类型,并且由于需要创建该类型,因此不需要使用泛型实现,因为methodBase.invoke接受一个对象数组。 此代码假定您正在从数据库字段实例化目标。如果不是,就相应地调整。 当然,这并不是全部包含,也没有有用的异常处理,但是它允许您对任意类型动态执行任意方法,其中任意参数值都来自一行中的字符串值。 注释 :在许多情况下,这个简单的执行器将无法工作。你需要确保你设计出你的动态方法来配合你最终决定使用的任何策略。
|
![]() |
3
1
下面是我在.NET 3.5中使用的一个有用的扩展方法。 有了这个扩展方法,您的代码可能如下所示:
通过在参数中提供默认值,编译器将知道您希望将字符串转换为哪个枚举。它将尝试在枚举中查找文本。否则,它将返回默认值。 这里是扩展方法:(这个版本也进行部分匹配,所以即使是“m”也能很好地工作!)
|
![]() |
4
0
我还是不完全理解你的问题…但是,您会说“除了参数之外一切都很好。” 我假设“customertype”是对象上属性的名称,“master”是要放入该属性中的字符串值。 这是(另一个)扩展方法,可能会有所帮助。 一旦从“数据库”字段中获得了新对象和值和属性名,就可以使用:
方法:
|
![]() |
5
-1
如果使用.NET 4,可以执行以下操作。
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |