我有一个如下方法,它获取数据并将它们存储到特定变量。我还有两个静态变量,如果满足条件,它们会保留它们的值。我的问题是如何将这些数据存储在特定类的属性中?
例如,我有一个名为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
类的对象。
有人可以帮忙吗?
答案 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
}
我不确定为什么RateWeek
和RateCountry
属性在您的班级中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。尝试将您的数据对象(仅保存数据)与业务对象(包含业务逻辑,并通过接收数据对象作为参数构建)分开。将所有疯狂的持久性逻辑放在业务对象中,并在代码中的任何位置使用业务对象(而不是使用数据对象)。
保持课堂简洁。如果你在同一个班级编写很多代码,可能是因为你的面向对象设计不好。