直接在c#

时间:2018-04-22 15:20:46

标签: c#

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

例如,我有一个名为UserDetails的类,其属性为: 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;
}

然后我不是在方法start, length, name中传递像AssignDetails等几个参数,而是直接考虑静态变量来传递UserDetails类的对象。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

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

你想要做的是直截了当:

首先,您需要更改方法,以便接受您的类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
}

我不确定为什么RateWeekRateCountry属性在您的班级中static,但要设置它们,您可以按照以下方式执行它们(请注意它正在使用该类和不是类的实例):

UserDetails.RateWeek = RateWeek;

答案 1 :(得分:1)

您可以将实例的属性用作类的间接'静态属性,虽然所有这些在设计方面都非常难看。

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

我强烈建议你将这些静态属性移到另一个类中,这个类负责持久化它们。

E.g。尝试将您的数据对象(仅保存数据)与业务对象(包含业务逻辑,并通过接收数据对象作为参数构建)分开。将所有疯狂的持久性逻辑放在业务对象中,并在代码中的任何位置使用业务对象(而不是使用数据对象)。

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