如何在果园中从字符串名称创建形状
本文关键字:创建 字符串 果园 | 更新日期: 2023-09-27 18:35:41
我想创建一个可以使用字符串值来定义形状的基本 ContentPart 驱动程序类。这不是我要做的确切代码,但应该显示我希望做什么的一般想法。
而不是以下内容:
protected override DriverResult Display(ProductPart, string displayType, dynamic shapeHelper)
{
return this.ContentShape("Parts_Product",
() => shapeHelper.Parts_Product());
}
我希望能够做这样的事情:
protected override DriverResult Display(ProductPart, string displayType, dynamic shapeHelper)
{
return this.ContentShape("Parts_Product",
() => shapeHelper["Parts_Product"]());
}
有没有办法将字符串名称与 shapeHelpers 一起使用来生成形状?
是的,这是完全可能的。
动态shapeHelper
对象是 IShapeFactory
的实例。此接口提供了完全执行所需操作的方法。
不使用动态方法调用shapeHelper.Parts_Product()
,只需使用提供的Create
方法重载之一,例如。 shapeHelper.Create("Parts_Product")
.事实上,这正是调用动态方法时在后台发生的情况。
最后,您的整个示例可能如下所示:
protected override DriverResult Display(
ProductPart part, string displayType, dynamic shapeHelper)
{
// It's better to cast shapeHelper to IShapeFactory first
// to avoid dynamic dispatch
return this.ContentShape("Parts_Product",
() => ((IShapeFactory)shapeHelper).Create("Parts_Product"));
}