在另一个 class 中返回一个 IList<GenericClass> 属性
Returning an IList<GenericClass> property in another class
我有一个 ErrorMessage
class 和 ResultMessage
class 需要通用。 ErrorMessage
是:
public class ErrorMessage
{
public int httpStatus { get; set; }
public string Header { get; set; } = "Error";
public string Message { get; set; }
}
ResultMessage
与 ErrorMessage
相同,除了它还必须 return 一个 IList
结果,这意味着例如如果我成功插入了一个用户,输出应该是
{
"httpStatus": 200,
"Header" : "Success",
"Message" : "User added Successfully",
"Result" : {
"userName": "dfdaadf",
"password": "faeferafreaf"
}
}
我的ResultMessage
是:
public class ResultMessage : ErrorMessage
{
public ResultMessage()
{
httpStatus = 200;
Header = "Success";
}
public virtual IList<T> Result { get; set; }
}
其中 T
应定义为通用 class,例如:
var msg = new ResultMessage();
var user = new User();
var list = new IList<User>();
list.Add(user);
msg.Result = list;
当然 public virtual IList<T> Result { get; set; }
是语法错误。
我怎样才能实现我的目标?
您的 ResultMessage
也必须是通用的:
public class ResultMessage<T> : ErrorMessage
调用时必须是这样的:
var msg = new ResultMessage<User>();
var user = new User();
var list = new List<User>();
list.Add(user);
msg.Result = list;
另一个提示:
列表属性不应该是可设置的。要么为此 属性 使用只读接口,如 IReadOnlyList<T>
,要么使 属性 本身为只读,并在构造时对其进行初始化:
public class ResultMessage<T> : ErrorMessage
{
public IReadOnlyList<T> Result { get; set; }
public IList<T> Result { get; } = new List<T>();
}
List 实现 IList 接口,您可以将 ResultMessage 作为通用 class,示例:
public class ResultMessage<T> : ErrorMessage
{
public ResultMessage()
{
httpStatus = 200;
Header = "Success";
Result = new List<T>();
}
public virtual IList<T> Result { get; set; }
}
var msg = new ResultMessage<User>();
var user = new User();
msg.Result.Add(user);
我有一个 ErrorMessage
class 和 ResultMessage
class 需要通用。 ErrorMessage
是:
public class ErrorMessage
{
public int httpStatus { get; set; }
public string Header { get; set; } = "Error";
public string Message { get; set; }
}
ResultMessage
与 ErrorMessage
相同,除了它还必须 return 一个 IList
结果,这意味着例如如果我成功插入了一个用户,输出应该是
{
"httpStatus": 200,
"Header" : "Success",
"Message" : "User added Successfully",
"Result" : {
"userName": "dfdaadf",
"password": "faeferafreaf"
}
}
我的ResultMessage
是:
public class ResultMessage : ErrorMessage
{
public ResultMessage()
{
httpStatus = 200;
Header = "Success";
}
public virtual IList<T> Result { get; set; }
}
其中 T
应定义为通用 class,例如:
var msg = new ResultMessage();
var user = new User();
var list = new IList<User>();
list.Add(user);
msg.Result = list;
当然 public virtual IList<T> Result { get; set; }
是语法错误。
我怎样才能实现我的目标?
您的 ResultMessage
也必须是通用的:
public class ResultMessage<T> : ErrorMessage
调用时必须是这样的:
var msg = new ResultMessage<User>();
var user = new User();
var list = new List<User>();
list.Add(user);
msg.Result = list;
另一个提示:
列表属性不应该是可设置的。要么为此 属性 使用只读接口,如 IReadOnlyList<T>
,要么使 属性 本身为只读,并在构造时对其进行初始化:
public class ResultMessage<T> : ErrorMessage
{
public IReadOnlyList<T> Result { get; set; }
public IList<T> Result { get; } = new List<T>();
}
List 实现 IList 接口,您可以将 ResultMessage 作为通用 class,示例:
public class ResultMessage<T> : ErrorMessage
{
public ResultMessage()
{
httpStatus = 200;
Header = "Success";
Result = new List<T>();
}
public virtual IList<T> Result { get; set; }
}
var msg = new ResultMessage<User>();
var user = new User();
msg.Result.Add(user);