委托func <in t,=“”tresult =“”>无法访问属性</in>

时间:2012-09-14 20:13:15

标签: c# function delegates

我有这个代码

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

这是不可能的?

3 个答案:

答案 0 :(得分:5)

你在

上收到错误的原因
Com.CompanyName = f.txtC.text

是您必须在对象初始值设定项中设置Com属性,而不是在CompanyName属性上设置Com属性。修复方法是使用嵌套对象初始值设定项将Com设置为具有正确Company属性的新CompanyName

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 },
    };

答案 1 :(得分: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属性。

答案 2 :(得分: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 }
};