C# 这种使用动态的做法不好吗?

C# 这种使用动态的做法不好吗?,c#,linq,object,dynamic,C#,Linq,Object,Dynamic,我想知道这个代码是不是一个坏习惯 .. var StoresInData = (from s in MainData orderby s.LocationCode select new { s.LocationCode, s.LocationShortName,

我想知道这个代码是不是一个坏习惯

..
var StoresInData = (from s in MainData
                    orderby s.LocationCode
                    select new
                      {
                          s.LocationCode,
                          s.LocationShortName,
                          s.LocationName
                      }).Distinct().ToList();
..
foreach (var store in StoresInData)
    {
       CreateReportForStore(store);
       ..
       ..
    }
在CreateReportForStore函数中:

private void CreateReportForStore(dynamic store)
        {
            var a = store.LocationCode;
            Console.WriteLine(a);
            ..
            ..
        }
在这种情况下,使用动态传递匿名对象是一种不好的做法吗


谢谢

如果需要传递,最好使用类型化类。使代码更具可读性和可维护性。此外,它还减少了出错的可能性

如果需要传递,最好使用类型化类。使代码更具可读性和可维护性。此外,它还减少了出错的可能性

通常,我使用dynamics的唯一目的是从API返回对象属性的子集。如果它在后端传递,那么我将为它创建一个对象。

通常,我使用dynamics的唯一目的是从API返回对象属性的子集。如果它是在后端传递的,那么我会为它创建一个对象。

使用dynamic传递匿名对象是一种糟糕的代码味道。如果我在查看某人的代码,我会告诉他们为其创建一个数据类。另外,请注意,
dynamic
仍然维护可访问性修饰符。由于匿名类型是
内部
(非契约),因此在不同的程序集中将其作为
动态
传递将导致错误。只要做你自己的类型,这是值得的时间。特别是如果C#编译器团队决定在将来将它们设置为
private
:使用PUsing dynamic传递匿名对象是一种糟糕的代码味道。如果我在查看某人的代码,我会告诉他们为其创建一个数据类。另外,请注意,
dynamic
仍然维护可访问性修饰符。由于匿名类型是
内部
(非契约),因此在不同的程序集中将其作为
动态
传递将导致错误。只要做你自己的类型,这是值得的时间。特别是如果C#编译器团队决定在将来将其
私有化
:请不要提及性能开销,因为类型是在运行时解析的。更不要说性能开销,因为类型是在运行时解析的。