gpt4 book ai didi

c# - 同一命名空间中的 "Dynamic object does not contain a definition"错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:20 25 4
gpt4 key购买 nike

这是我第一次尝试动态对象。我有一个包含字符串 ID 和浮点值的类“Cell”。我想要的是获取 Cells 列表并创建一个动态对象,并将其所有 ID 和值作为属性。

这是我的“DynamicRow”:

namespace WPFView
{
public class DynamicRow : DynamicObject
{
public List<Cell> Cells;
public DynamicRow(List<Cell> cells)
{
Cells = new List<Cell>(cells);
}

public string GetPropertyValue(string propertyName)
{
if (Cells.Where(x => x.ID == propertyName).Count() > 0)
{
//Cell.GetValueString() returns the float value as a string
return Cells.Where(x => x.ID == propertyName).First().GetValueString();
}
else
{
return string.Empty;
}
}

public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = GetPropertyValue(binder.Name);
return string.IsNullOrEmpty(result as string) ? false : true;
}
}
}

我试着用这个测试它:

namespace WPFView
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//ArithmeticCell is derived from Cell
List<Cell> cells = new List<Cell> { new ArithmeticCell { ID = "NA2_DIR", Value = 1234 } };
DynamicRow dRow = new DynamicRow(cells);

MessageBox.Show(dRow.NA2_DIR);
}
}
}

编译器报错

'WPFView.DynamicRow' does not contain a definition for 'NA2_DIR' and no extension method 'NA2_DIR' accepting a first argument of type 'WPFView.DynamicRow' could be found

我读过一些类似的问题,但他们的问题是动态对象是在与调用方法不同的程序集中定义的。在我的例子中,动态对象与调用方法位于同一项目和命名空间中。

我该如何解决这个错误?

最佳答案

问题是您的 dRow 变量的编译时类型是 DynamicRow - 因此编译器不会将其视为动态值。

您需要将类型声明为dynamic 以便执行执行时绑定(bind):

dynamic dRow = new DynamicRow(cells);

关于c# - 同一命名空间中的 "Dynamic object does not contain a definition"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29921516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com