62,074
社区成员
发帖
与我相关
我的任务
分享
public static List<dynamic> genChangeOutViewColumn()
{
List<dynamic> result = new List<dynamic>();
using (var context = new AppDbContext())
{
string valid = EnumValidStatus.Data1.GetEnumItemValue();
var list = context.sam_ba_changetype.Where(c => c.Direction == EnumDirection.Out.ToString() && c.Status == valid)
.OrderBy(c => c.SeqNo).ThenBy(c => c.TypeId).ToList();
for (int i = 0; i < list.Count(); i++)
{
result.Add(new { name = string.Format("TypeOut_{0}", i+1), label = list[i].ChangeName });
}
return result;
}
}
using System;
using System.Collections.Generic;
using System.Dynamic;
namespace ConsoleApp1
{
class Program
{
static void Main()
{
dynamic r = x()[0];
Console.WriteLine(r.b);
Console.WriteLine("................按任意键结束");
Console.ReadKey();
}
static List<ExpandoObject> x()
{
var r = new ExpandoObject();
dynamic s = r;
s.a = 1;
s.b = "2";
return new List<ExpandoObject> { r };
}
}
}
这里在使用时使用 dynamic 完全没有问题,在定义 x 函数时声明 List<ExpandoObject> 也非常正规。
如果声明 x 函数返回为 List<dynamic> 或者 List<object> 那么就应该看成是一个不负责任的设计了。public static List<dynamic> genChangeOutViewColumn()
这个方法定义,应该作为不合格的定义,作为 bug 来看待。这里应该使用 List<含有具体功能内涵的类型> 作为输出参数声明,而不是随便声明 object 集合。@foreach (TypeOutVm item in RepItemSummaryService.genChangeOutViewColumn())
{
@:{ label: '@item.Label', name: '@item.Name', width: 100, align: 'left' },
}