【发布时间】:2021-09-28 15:14:18
【问题描述】:
我是 C# 新手,
我正在尝试使用已创建的函数here
实际上我不知道如何将列表作为数组作为参数返回。
这里的这个函数将使用 Odoo API 的“write”方法。
public void SetFieldValue(string field, object value)
{
var fieldAttribute = _fieldsResult.FirstOrDefault(f => f.FieldName == field);
if (fieldAttribute == null) return;
fieldAttribute.Changed = fieldAttribute.Changed == false;
fieldAttribute.Value = value;
}
所以我确实喜欢这个,但它不起作用:
foreach (var result in results)
{
result.SetFieldValue("payment_method_ids", _NewPaymentLine.ToArray());
result.Save();
}
_NewPaymentLine 是我填写的列表:
var _NewPaymentLine = new List<object>();
_NewPaymentLine.Add(new object[] { 4, Payment_Ids.GetField("id").Value });
我只能说input value 是System.Object[] 类型,output value 是System.Int32[] 类型。
实际上,我用 SetFieldValue 返回的是一个 System.Object[],但我认为我必须返回一个 System.Int32[],所以问题是,我该如何制作我的 System.Object 列表[] 进入 System.Int32[]
先谢谢了,希望有人能帮助我。
【问题讨论】:
-
问题是什么?我真的不明白。如何从 C# 中的方法返回数组?
-
实际上,我用 SetFieldValue 返回的是一个 System.Object[],但我认为我必须返回一个 System.Int32[],所以问题是,我该怎么做才能让我的System.Object[] 列表进入 System.Int32[]
-
您必须创建一个新数组。您不能“投射”现有数组。执行
int[] resultArray = Array.ConvertAll(inputArray, x => (int)x);之类的操作,其中inputArray是您的对象数组-或者如果您需要转换string(或您的对象可能是其他任何东西),请使用Convert.ToInt32(x)之类的东西而不是(int)x。 -
所以,我尝试这样做,但我无法从 'System.Collections.Generic.List
-
您的错误表明您有一个
List<object>,但是需要一个List<object>(List<ojbect>[]) 的数组。这听起来很奇怪......也许是你的错误?