我试图在字典中插入三个字段,因此将两个字段转换为对象类型并添加到字典
public User AuthenticatedUser
{
get
{
if (User.Identity.IsAuthenticated)
{
return usersManager.GetByEmail(User.Identity.Name);
}
return null;
}
}
现在我正在尝试从字典中检索详细信息:
int empId;
String empName;
decimal salary;
public EmployeeClass(string empName,decimal salary)
{
this.empName = empName;
this.salary = salary;
}
//creating dictionary object
Dictionary<int, object> employeeDictionary = new Dictionary<int, object>();
EmployeeClass emp;
for(int i=0;i<5;i++)
{
Console.WriteLine("Enter Employee " + (i+1) + " details ");
Console.WriteLine("Enter Employee ID ");
empId = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter Employee Name ");
empName = Console.ReadLine();
Console.WriteLine("Enter Salary of the employee ");
salary= Convert.ToDecimal(Console.ReadLine());
//creating object for two fields
emp= new EmployeeClass(empName,salary);
//adding to dictionary one is field and other object
employeeDictionary.Add(empId, emp);
}
但是我收到了这个错误:
对象不包含empName的定义,并且没有扩展方法empName接受Object
类型的第一个参数
如何在给出对象类型时从字典中检索详细信息?
答案 0 :(得分:0)
您的第一个问题是,您的媒体资源(empName
和salary
)是<{1}}的私有字段:
EmployeeClass
您不使用显式访问修饰符,因此默认情况下您的字段是私有的。将其更改为:
public class EmployeeClass
{
int empId;
String empName;
decimal salary;
...
}
如果要存储public class EmployeeClass
{
public int empId {get; private set;}
public String empName {get; private set;}
public decimal salary {get; private set;}
...
}
的实例,为什么使用Dictionary<int,object>
?只需使用
EmployeeClass
所以编译器会知道&#34;对象&#34;在字典中是Dictionary<int,EmployeeClass> employeeDirectory
并且会知道它的属性。如果使用EmployeeClass
,则编译器无法知道是否存在这些属性。