【问题标题】:Delegate func<in T, TResult> can't access property委托 func<in T, TResult> 无法访问属性
【发布时间】:2012-09-14 20:13:14
【问题描述】:

我有这个代码

private static Func<fLogin,BusinessObject.User> Make = f => 
new BusinessObject.Usuario { 
Name = f.txtU.Text,
Pass = f.txtPass.Text,
};

所以。 User 类是这样的。

public class User
{
public string Name {get; set; }
public string Pass {get; set; } 
public Company Com {get; set; }
}

并且用户有一个公司 这是公司

public class Company
{
public string CompanyName {get; set;}
}

所以,问题来了,当我想访问公司名称时,出现错误

private static Func<fLogin,BusinessObject.User> Make = f => 
new BusinessObject.Usuario { 
Name = f.txtU.Text,
Pass = f.txtPass.Text,
Com.CompanyName = f.txtC.text
};

Com.CompanyName = f.txtC.text

这不可能吗?

【问题讨论】:

  • 您至少不需要告诉我们错误是什么吗?
  • 出现了两次 Com.CompanyName = f.txtC.text?两者都不工作?

标签: c# function delegates


【解决方案1】:

您遇到错误的原因

Com.CompanyName = f.txtC.text

是你必须在对象初始化器中设置Com 属性,而不是在Com 属性上设置CompanyName 属性。解决方法是使用嵌套对象初始化程序将 Com 设置为具有正确 CompanyName 属性的新 Company

private static Func<fLogin,BusinessObject.User> Make = f => 
    new BusinessObject.User
    { 
        Name = f.txtU.Text,
        Pass = f.txtPass.Text,
        Com = new Company { CompanyName = f.txtC.text },
    };

【讨论】:

    【解决方案2】:

    您应该将Com.CompanyName = f.txtC.text 更改为Com = new Company { CompanyName = f.txtC.text }。所以字段应该是这样的:

      private static Func<fLogin,BusinessObject.User> Make = f => 
          new BusinessObject.User
          { 
              Name = f.txtU.Text,
              Pass = f.txtPass.Text,
              Com = new Company { CompanyName = f.txtC.text },
          };
    

    在您的代码中,您尝试设置尚未初始化的 Com 对象的 CompanyName 属性。

    【讨论】:

      【解决方案3】:

      您不能在属性初始化程序中分配给属性的属性。此外,在不实际创建 Company 对象的情况下分配给 Com.CompanyName 是没有意义的。

      private static Func<fLogin,BusinessObject.User> Make = f => 
          new BusinessObject.Usuario { 
              Name = f.txtU.Text,
              Pass = f.txtPass.Text,
              Com = new Company { CompanyName = f.txtC.text }
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        相关资源
        最近更新 更多