C# 从asp.net web api 2返回动态对象的优缺点

C# 从asp.net web api 2返回动态对象的优缺点,c#,.net,asp.net-web-api,asp.net-web-api2,expandoobject,C#,.net,Asp.net Web Api,Asp.net Web Api2,Expandoobject,我正在构建一个asp.net web api 2服务。我需要创建多个端点。该服务只返回数据。我有大约200个端点&每个端点返回不同类型的数据。我不想创建表示每种类型的多个模型。因此,我决定返回dynamictype作为端点的返回类型 [Route("abc/xyz")] public dynamic GetData() { List<dynamic> dataList = new List<dynamic>();

我正在构建一个asp.net web api 2服务。我需要创建多个端点。该服务只返回数据。我有大约200个端点&每个端点返回不同类型的数据。我不想创建表示每种类型的多个模型。因此,我决定返回
dynamic
type作为端点的返回类型

[Route("abc/xyz")]
        public dynamic GetData()
        {
            List<dynamic> dataList = new List<dynamic>();
            dynamic data = new ExpandoObject();
            data.category = "Cat 1";
            data.value = 210.0;
            data.color = "#023867";
            dataList.Add(data);

            data = new ExpandoObject();
            data.category = "Cat 2";
            data.value = 110.23;
            data.color = "#4094d0";
            dataList.Add(data);

            data = new ExpandoObject();
            data.category = "Cat 3";
            data.value = 195.56;
            data.color = "#0b4e95";
            dataList.Add(data);


            return dataList;
        }
[路线(“abc/xyz”)]
公共动态GetData()
{
List dataList=新列表();
动态数据=新的ExpandooObject();
data.category=“第1类”;
data.value=210.0;
data.color=“#023867”;
dataList.Add(数据);
数据=新的ExpandooObject();
data.category=“第2类”;
data.value=110.23;
data.color=“#4094d0”;
dataList.Add(数据);
数据=新的ExpandooObject();
data.category=“第3类”;
data.value=195.56;
data.color=“#0b4e95”;
dataList.Add(数据);
返回数据列表;
}

虽然这很好,但我读到这不是一个好方法。我只想知道这种方法的缺点是什么?

首先,你会失去类型安全性。在您的示例中,没有任何东西可以阻止列表中的3项具有不同的“形状”,这可能会导致意外错误。@dman2306。同意。但这种风险与
动态
类型有关。我想知道在可伸缩性、性能、序列化等方面+1@dman2306@性能点的SharpCoder
ExpandooObject
IDictionary
。所以序列化的代价和序列化键值存储列表是一样的。我想不出有什么。相反,你可以利用没有类型检查的优势。