我写了一个单独的类来保存我的网站的权限。我在每个班级打电话给这个班级。我无法从我的权限类中恢复值。我会告诉你我下面的内容:
权限类
public class Permissions
{
public static string selectedNumber = "";
public static string selectedName= "";
public static string selectedLocation= "";
public Info SetInfo(string selectedValue)
{
string selectInfo = "SELECT [Num] AS 'Number', [Name] AS 'Name', CONVERT(nvarchar(50),RTRIM(b.Num])) + ' - ' + CONVERT(nvarchar(50),b.Name) AS 'Location' "
+ "FROM [TBL_Info] a "
+ "left join [TBL_Where] b on (a.[ID] = b.[ID]) "
+ "WHERE a.ID = @ID";
sqlCmd = new SqlCommand(selectInfo, sqlConn);
sqlConn.Open();
sqlCmd.Parameters.AddWithValue("@ID", selectedValue);
SqlDataReader rdrInfo = sqlCmd.ExecuteReader();
if (rdrInfo.HasRows)
{
rdrInfo.Read();
selectedNumber = rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Number")).ToString();
selectedName= rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Name")).ToString();
selectedLocation = rdrInfo .GetSqlString(rdrInfo .GetOrdinal("Location")).ToString();
}
sqlCmd.Connection.Close();
return new Info()
{
number= selectedNumber,
name= selectedName,
location= selectedLocation
};
}
public class Info
{
public String number{ get; set; }
public String name{ get; set; }
public String location{ get; set; }
}
}
我目前正试图在另一个类中调用它:
Classes.Permissions permission = new Classes.Permissions();
permission.SetInfo(selectedUserValue);
最终产品是我在我尝试使用来自permission.SetInfo()
目前我无法获得任何回报....我知道我做错了什么,显然。那么有人可以就如何实现这一点给我一些建议吗?
答案 0 :(得分:2)
除了我遇到的一些风格之外,你的代码看起来应该可以工作(只要你的数据库中有数据)。要从方法返回多个值,请创建一个新对象(即number
),用于定义要返回的内容。
所以,你应该能够写出类似的内容:
Info
请注意,我使用空合并运算符(Textbox txtBox;
var info = new Classes.Permissions().SetInfo(SelectedUserValue);
txtBox.Text =
info.number ?? "<null>" + " " +
info.name ?? "<null> + " " +
info.location ?? "<null>'
),因为??
可以返回SetInfo
的实例,如果没有返回任何行,则所有成员都为Info
你的数据库查询。
顺便说一下,从方法返回多个值的另一种方法是使用null
个参数:
out
然后你的Textbox txtBox;
string number;
string name;
string location;
new Classes.Permissions().SetInfo(SelectedUserValue, out number, out name, out location);
会是这样的:
SetInfo
要返回同一对象的多个实例,请返回
方法public void SetInfo(string SeelctedUserValue,
out string number, out string name, out string location)
{
//assign values to number,name and location
}
(即IEnumerable
或List
),Array
,例如,如果您知道要返回三个,那么您可能希望让方法返回Tuple<>
:
Tuple<Info,Info,Info>