C# 如何使其通用
我想用实例C# 如何使其通用,c#,.net,generics,constructor,wpfdatagrid,C#,.net,Generics,Constructor,Wpfdatagrid,我想用实例的构造函数使这个类成为泛型类,这是我的类 class Pagenation { public TextBlock PageInformation { get; set; } public DataTable dt { get; set; } public ComboBox NumberOfRecords { get; set; } public DataGrid DatagridObject { get; set; }
的构造函数使这个类成为泛型类,这是我的类
class Pagenation
{
public TextBlock PageInformation { get; set; }
public DataTable dt { get; set; }
public ComboBox NumberOfRecords { get; set; }
public DataGrid DatagridObject { get; set; }
public Button BtnPrev { get; set; }
public Button BtnFirst { get; set; }
public Button BtnNext { get; set; }
public Button BtnLast { get; set; }
public int NumberOfRecPerPage { get; set; }
private int pageIndex = 1;
private int numberOfRecPerPage;
public Pagenation(DataGrid UCDatagrid, ComboBox NumberOfRecordsComboBox, int
numOfRecPerPage, TextBlock PageInfo, DataTable Data,
Button Prev, Button First, Button Next, Button Last)
{
NumberOfRecordsComboBox.Items.AddRange(new List<string>{ "5", "10", "15", "20" });
(NumberOfRecords, numberOfRecPerPage, DatagridObject) =
(NumberOfRecordsComboBox, numOfRecPerPage, UCDatagrid);
dt = Data.Copy();
PageInformation = PageInfo;
(BtnPrev, BtnFirst, BtnNext, BtnLast) = (Prev, First, Next, Last);
}
}
类分页
{
公共文本块页面信息{get;set;}
公共数据表dt{get;set;}
公共组合框NumberOfRecords{get;set;}
公共DataGrid DatagridObject{get;set;}
公共按钮BtnPrev{get;set;}
公共按钮BtnFirst{get;set;}
公共按钮BtnNext{get;set;}
公共按钮BtnLast{get;set;}
public int NumberOfRecPerPage{get;set;}
私有int-pageIndex=1;
私人int numberOfRecPerPage;
公共分页(DataGrid UCDatagrid,组合框编号OfRecords组合框,int
numOfRecPerPage、TextBlock PageInfo、数据表数据、,
按钮上一个、按钮第一个、按钮下一个、按钮最后一个)
{
NumberOfRecordsComboBox.Items.AddRange(新列表{“5”、“10”、“15”、“20”});
(NumberOfRecords、numberOfRecPerPage、DatagridObject)=
(NumberOfRecordsComboBox,numOfRecPerPage,UCDatagrid);
dt=Data.Copy();
PageInfo=PageInfo;
(BtnPrev、BtnFirst、BtnNext、BtnLast)=(上一个、第一个、下一个、最后一个);
}
}
我希望分页构造函数接收类型为
的对象,如下所示
Pagenation PG = new Pagenation<PartsUC>(this);
Pagenation PG=新的寻呼(本);
我创建了这样的泛型类
class Pagenation<T>
{
public Pagenation(T ClassObj)
{
NumberOfRecords = ClassObj.???; // want to assign the properties of the ClassObj
numberOfRecPerPage = ClassObj.???;
DatagridObject = ClassObj.???;
dt = ClassObj.???;
PageInformation =ClassObj.???;
(BtnPrev, BtnFirst, BtnNext, BtnLast) =
(ClassObj.???, ClassObj.???, ClassObj.???, ClassObj.???);
}
}
类分页
{
公共寻呼(T类OBJ)
{
NumberOfRecords=ClassObj.???;//要分配ClassObj的属性吗
numberOfRecPerPage=ClassObj。???;
DatagridObject=ClassObj。???;
dt=类别OBJ。???;
PageInformation=ClassObj。???;
(BtnPrev、BtnFirst、BtnNext、BtnLast)=
(ClassObj.??,ClassObj.??,ClassObj.??,ClassObj.??);
}
}
我不知道如何将pagenation类属性重新分配给所接收的
实例对象的属性,但在类名之后添加,其中T:PartsUC
,这将约束您的泛型类型
class Pagenation<T> where T : PartsUC
{
public Pagenation(T ClassObj)
{
this.NumberOfRecords = ClassObj.NumberOfRecords;
this.numberOfRecPerPage = ClassObj.numberOfRecPerPage;
this.DatagridObject = ClassObj.???????;
//... set your property from PartsUC class
}
}
为什么所有的东西都是静态的?泛型总是PartsUC类型还是它的后代?作为它的后代,它们都有必要的分页属性,比如DataGrid,。。。。例如,我有PartsUC、equipmentuc、UsersUC、RequestUC,它们都有数据网格。@HúsámShüjádia diiñthoes类都有相同的属性吗?或者有些是不同的?你可能不希望所有这些东西都是静态的。请注意,您的所有属性也可以自动实现。请帮你(现在和将来)自己和任何将编写你的代码的人一个忙,并坚持单一的命名约定_btnPrev vs_Btnext,除numberOfRecsPerPage外的所有字段都有一个前导下划线…请保持一致。稍后你会感谢你自己。谢谢你的回答,但我想告诉你,我的项目中有不止一个类类似于
PartsUC
类,这就是为什么我想把它变成一个泛型。让接口成为那些类的契约,然后其中:
谢谢,我是编程新手,我读过关于C#接口类的书,我想我明白你的意思了,如果有帮助,我会尝试一下并给你反馈。我会给你写一个样本等一下:)非常感谢你,我真的很感谢你的帮助^^好的,慢慢来:)
public interface IUC{
Button BtnPrev { get; set;}
Button BtnFirst{ get; set;}
Button BtnNext{ get; set;}
Button BtnLast{ get; set;}
DataGrid DatagridObject{ get; set;}
//... all you need property info
}
public class PartsUC : IUC{
Button BtnPrev { get; set;}
Button BtnFirst{ get; set;}
Button BtnNext{ get; set;}
Button BtnLast{ get; set;}
DataGrid DatagridObject{ get; set;}
//... all you need property info
}
public class EqupmentUC : IUC{
Button BtnPrev { get; set;}
Button BtnFirst{ get; set;}
Button BtnNext{ get; set;}
Button BtnLast{ get; set;}
DataGrid DatagridObject{ get; set;}
//... all you need property info
}
public class UsersUC : IUC{
Button BtnPrev { get; set;}
Button BtnFirst{ get; set;}
Button BtnNext{ get; set;}
Button BtnLast{ get; set;}
DataGrid DatagridObject{ get; set;}
//... all you need property info
}
class Pagenation<T> where T : IUC
{
public Pagenation(T ClassObj)
{
this.NumberOfRecords = ClassObj.NumberOfRecords;
this.numberOfRecPerPage = ClassObj.numberOfRecPerPage;
//... set your property from PartsUC class
}
}