gpt4 book ai didi

c#属性获取,设置不同类型

转载 作者:太空狗 更新时间:2023-10-29 22:08:35 25 4
gpt4 key购买 nike

我有这样一个枚举和一个属性。

        public enum Type
{
Hourly = 1,
Salary = 2,
None = 3
};


public string EmployeeType
{
get
{
string type;
switch (employeeType)
{
case Type.Hourly:
type = "Hourly Employee";
break;
case Type.Salary:
type = "Salary Employee";
break;
default:
type = "None";
break;
}
return type;
}

// **EDIT:**
// Now I am trying to parse the string as enum Type.
// But Constructor still waits a string to set EmployeeType.
set
{
employeeType = (Type)Enum.Parse(typeof(Type), value);
}
}

这是我的课:

public class Employee
{
private Type employeeType;
}

我想创建这样一个构造函数:

Employee(Employee.Type type) 
{
EmployeeType = type;
}

编辑:

无法将类型“Payroll.Employee.Type”隐式转换为“string”

属性的set访问器应该怎么写?

更新:

我希望 get 访问器返回字符串并设置访问器采用参数类型 Employee.Type。我了解到,根据 C# 规范,不可能在属性中执行此操作。我必须编写单独的 getter 和 setter 方法。

最佳答案

使用DescriptionAttribute反而。

public enum Type
{
[Description("Hourly Employee")]
Hourly = 1,
[Description("Salary Employee")]
Salary = 2,
[Description("None")]
None = 3
};

那么你就会有一个

public Type EmployeeType {get; set;}

属性(property)。如果有人想把它写出来,他们可以获得描述。我还将其称为 Type 而不是 EmployeeType,因为调用 myEmployee.EmployeeType 听起来多余。您的另一个选择可能是展开属性并有两种方法

public string GetEmployeeType() { //your switch statement }
public void SetEmployeeType(EmployeeType type)
{
_type = type;
}

不像属性那么优雅,但很快就完成了工作。还要记住,IL 中的属性只是方法。

关于c#属性获取,设置不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com