委托func <in T,TResult>无法访问属性

Cra*_*man 1 c# delegates function

我有这个代码

private static Func<fLogin,BusinessObject.User> Make = f => 
new BusinessObject.Usuario { 
Name = f.txtU.Text,
Pass = f.txtPass.Text,
};
Run Code Online (Sandbox Code Playgroud)

所以.User类就是这个.

public class User
{
public string Name {get; set; }
public string Pass {get; set; } 
public Company Com {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并且用户在这里有公司的公司

public class Company
{
public string CompanyName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

所以,这是问题,当我想访问公司名称,给我错误

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
Run Code Online (Sandbox Code Playgroud)

这是不可能的?

Ada*_*cin 5

您收到错误的原因

Com.CompanyName = f.txtC.text
Run Code Online (Sandbox Code Playgroud)

是你必须Com在对象初始化程序中设置CompanyName属性,而不是在属性上设置Com属性.修复方法是使用嵌套对象初始值设定项设置ComCompany具有正确CompanyName属性的new :

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 },
    };
Run Code Online (Sandbox Code Playgroud)