1

我有这个代码

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

所以。用户类是这样的。

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

这是不可能的?

4

3 回答 3

5

您收到错误的原因

Com.CompanyName = f.txtC.text

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

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 },
    };
于 2012-09-14T20:16:58.873 回答
2

您应该更改Com.CompanyName = f.txtC.textCom = 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 属性。

于 2012-09-14T20:16:01.090 回答
1

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

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 }
};
于 2012-09-14T20:17:11.967 回答