使用相同的属性名和类型多次分配匿名类型



我有一些代码块,并且需要在块外使用相同的对象,我可以使用强类型,如:

Person p = null;
if(cond1)
{
    p = new Person();
    p.Name = "Name1";
    p.Age = 25;
}
else if (cond2)
{    
    p = Employees.Select(c=>new Person() {Name = c.FirstName + " " +c.LastName }).First();
    p.Age = 23;
}
if(p != null)
{
    Console.Write(p.Name);
}

我需要通过匿名类型而不是人来做到这一点,我不能使用元组,因为属性名称没有命名,并且每次我需要这样的东西时都不能创建小类,这是一个非常简单的情况,但是LINQ结果块类似于我的例子呢?

这个怎么样

        var person = new { Name = "" }; ;
        if (cond1)
        {
            person  = new { Name = "Bob" };
        }
        else
        {
            person  = new { Name = "John" };
        }
        Console.WriteLine(person.Name);

能否试着替换

Person p = null;

dynamic p = null;

我建议您创建业务对象,这样您就不必使用匿名类型。但是,对您的问题的几个快速修复将是使用反射或将其作为动态类型传递。

编辑:

哦,你只是为了限制类型上的属性而创建新的子类型,这样你就不必指定你想要Console.Write()(或任何其他函数)可以使用的属性吗?我假设你要查询的数据在这些函数之外是可用的,如果它是强类型的,那么你不需要创建匿名类型,只需要使用这些类型…但是您必须在Console.Write()行中指定要打印的属性,这是我建议的。

相关内容

  • 没有找到相关文章

最新更新