C# 在类属性中使用泛型类型T
在c#中,如何设置一个可以返回另一个类(任何类型)的类 例如:C# 在类属性中使用泛型类型T,c#,generics,C#,Generics,在c#中,如何设置一个可以返回另一个类(任何类型)的类 例如: public class DataResponse { public bool Success {get;set;} public string ResponseMessage {get;set;} public T Data {get;set;} } T应该是任何类型的类 var personData = new PersonClass() { FirstName= "John",
public class DataResponse {
public bool Success {get;set;}
public string ResponseMessage {get;set;}
public T Data {get;set;}
}
T应该是任何类型的类
var personData = new PersonClass() {
FirstName= "John",
LastName="Doe"
};
var response = new DataResponse<EmployeeClass>() {
Success = true;
ResponseMessage = "OK";
Data = personData
}
数据属性将是一个不断变化的类别,例如,可能是个人或雇主
任何帮助都将不胜感激。请:
注意:我想根据我拥有的数据创建哪些响应对象:
public static DataResponse<T> ToSuccessResult<T>(this T data)
{
return new DataResponse<T> {
Success = true;
ResponseMessage = "OK";
Data = data
};
}
您需要在类级别声明泛型类型参数:
public class DataResponse<T> // <-- here
{
public bool Success {get;set;}
public string ResponseMessage {get;set;}
public T Data {get;set;}
}
只有方法和类型可以是泛型的。这意味着您不能声明泛型属性。最好是将包含属性的类设置为泛型
public class DataResponse<T>
{
public T Data { get; set; }
}
公共类数据响应
{
公共T数据{get;set;}
}
按照Sergey Berezovskiy和p.s.w.g.的建议,使您的类成为通用类。此外,您可以要求T是实现FirstName和LastName的类型:
public interface INamable
{
string FirstName { get; set; }
string LastName { get; set; }
}
public class DataReponse<T> where T : INamable
{
public bool Success { get; set; }
public string ResponseMessage { get; set; }
public T Data { get; set; }
}
公共接口不可用
{
字符串名{get;set;}
字符串LastName{get;set;}
}
公共类数据响应,其中T:不可
{
公共bool成功{get;set;}
公共字符串响应消息{get;set;}
公共T数据{get;set;}
}
var response = personData.ToSuccessResult();
public class DataResponse<T> // <-- here
{
public bool Success {get;set;}
public string ResponseMessage {get;set;}
public T Data {get;set;}
}
var personData = new PersonClass() {
FirstName = "John",
LastName = "Doe"
};
var response = new DataResponse<EmployeeClass>() {
Success = true;
ResponseMessage = "OK";
Data = personData
};
Console.WriteLine(response.Data.FirstName); // John
public class DataResponse<T>
{
public T Data { get; set; }
}
public interface INamable
{
string FirstName { get; set; }
string LastName { get; set; }
}
public class DataReponse<T> where T : INamable
{
public bool Success { get; set; }
public string ResponseMessage { get; set; }
public T Data { get; set; }
}