C# 在c语言中直接将数据分配给属性和静态属性#

C# 在c语言中直接将数据分配给属性和静态属性#,c#,C#,我有一个如下的方法,它获取数据并将它们存储到特定的变量中。我还有两个静态变量,如果满足条件,它们会保留它们的值。我的问题是如何将这些数据存储在特定类的属性中 例如,我有一个名为UserDetails的类,它具有以下属性: 用户详细信息类 public class UserDetails { public static string RateCountry { get; set; } public static string RateWeek { get; set; } p

我有一个如下的方法,它获取数据并将它们存储到特定的变量中。我还有两个静态变量,如果满足条件,它们会保留它们的值。我的问题是如何将这些数据存储在特定类的属性中

例如,我有一个名为
UserDetails
的类,它具有以下属性: 用户详细信息

public class UserDetails {
    public static string RateCountry { get; set; }
    public static string RateWeek { get; set; }
    public int Start { get; set; }
    public int Length { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}
二等舱

现在,它是这样工作的。但我想通过使用对象来增强它

public static string RateCountry { get; private set; }
public static string RateWeek { get; private set; }

public ActionResult ShowList()
{   
    int start = Convert.ToInt32(Request["start"]);
    int length = Convert.ToInt32(Request["length"]);
    string name = Request["search[value]"];
    string address = Request[("columns[3][search][value]")];
    string rateType = Request[("columns[7][search][value]")];

if (string.IsNullOrEmpty(rateType)) // if null, reset the static variables to null
{
    RateCountry = "";
    RateWeek = "";
}
else
{
    if (CheckDate(rateType)) // if contains date, assign to RateWeek
    {
        RateWeek = rateType;
    }
    else
    {
        RateCountry = rateType; // else if contains a string word, assing to ratecountry
    }
}
var items = AssignDetails(start, length, name, address, RateWeek, RateCountry);

return items;
}
然后,在方法
AssignDetails
中,我可以直接将静态变量考虑在内,传递
UserDetails
类的对象,而不是传递几个参数,如
start、length、name

有人能帮忙吗?

注意:在C#中,它们被称为属性而不是属性。这是完全不同的事情

你想做的是直截了当的:

首先,您需要更改方法,使其接受类
UserDetails
作为参数:

public void AssignDetails(UserDetails userDetails)
{
    // Use userDetails here to do whatever you want
}
其次,当调用上述方法时,需要将参数传递给它。您可以创建
UserDetails
的实例,并将其传递给
AssignDetails
方法:

var userDetails = new UserDetails 
{
    Start = start,
    Length = length,
    Name = name
    Address = address
}
我不知道为什么
RateWeek
ratecontry
属性在您的类中是
static
,但要设置这些属性,您可以按如下方式进行设置(请注意,它使用的是类而不是类的实例):


您可以使用实例的属性作为类的静态属性的间接寻址,尽管所有这些在设计方面都非常糟糕

public class UserDetails
{
    public static string PersistedRateCountry { get; set; }
    public static string PersistedRateWeek { get; set; }

    public static string RateCountry
    {
        get { return string.IsNullOrEmpty(rateType) ? "" : PersistedRateCountry; }
        set { PersistedRateCountry = value; }
    }
    public static string RateWeek
    {
        get { return string.IsNullOrEmpty(rateType) ? "" : PersistedRateWeek; }
        set { PersistedRateWeek= value; }
    }
    public static string RateWeek { get; set; }
    public int Start { get; set; }
    public int Length { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}
我强烈建议您将这些静态属性移到另一个类中,该类将负责持久化它们

例如,尝试将数据对象(仅保存数据)与业务对象(包含业务逻辑,通过接收数据对象作为参数来构造)分离。将所有疯狂的持久化逻辑放在业务对象中,并在代码中的任何地方使用业务对象(而不是使用数据对象)


保持你的课堂简短整洁。如果您在同一个类中编写了很多代码,可能是因为您的面向对象设计不好。

您真正想做什么?我认为它不是clearproperties,不是attribute。他们的意思和你想的不一样,是的。对不起。@Aria:我想利用对象。像
UserDetails user=newuserdetails{Start=Convert.ToInt32(Request[“Start”]),}
“我想通过使用对象来增强它”——将静态成员移动到其他类型不会增强任何功能。静态成员与“使用对象”相反。我将它们用作静态成员以保持其值。与此方法的第一次执行类似,返回true::if(CheckDate(rateType))//如果包含日期,则分配给RateWeek{RateWeek=rateType;}第二次执行时,上述结果不为true,但是我想保留它第一次执行时的值。如何将
UserDetails.RateWeek
传递到
AssignDetails(UserDetails)
您不需要传递它。因为它是
静态的
,所以您可以从任何地方访问它。因此,在
AssignDetails
方法中,您只需像这样访问它:
UserDetails.RateWeek
。您需要确定
静态
是如何工作的,否则您将陷入麻烦。您所说的第一次执行是什么意思?它是对
ShowList()
的ajax调用。在第一次执行时,我得到了2018年3月12日的
rateType
。在第二次执行时,即当我点击一个选项值组件时,我得到
rateType
值作为
ARA
。所以我想保留
12/03/2018
的值。好的,那么你应该没事了。请注意,
static
内容,例如
UserDetails.RateWeek
将一直保持这种状态,直到您更改它或重新启动应用程序池。
public class UserDetails
{
    public static string PersistedRateCountry { get; set; }
    public static string PersistedRateWeek { get; set; }

    public static string RateCountry
    {
        get { return string.IsNullOrEmpty(rateType) ? "" : PersistedRateCountry; }
        set { PersistedRateCountry = value; }
    }
    public static string RateWeek
    {
        get { return string.IsNullOrEmpty(rateType) ? "" : PersistedRateWeek; }
        set { PersistedRateWeek= value; }
    }
    public static string RateWeek { get; set; }
    public int Start { get; set; }
    public int Length { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}