如何使这个通用
How to make this generic
我想使这个 class 具有实例构造函数的通用 class <T>
这是我的 Class。
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);
}
}
我希望分页构造函数接收类型为 <some project Custom Class>
的对象,如下所示
Pagenation PG = new Pagenation<PartsUC>(this);
我将通用 class 制作成这样
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.???);
}
}
我不知道如何将分页 Class 属性重新分配给接收到的 <PartsUC>
实例对象的属性
只需在 class 名称后添加 where 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
}
}
编辑
使接口或抽象成为那些class契约,然后where: <your interface>
你的class实现了IUC
接口,然后封装了自己的属性.
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
}
}
我想使这个 class 具有实例构造函数的通用 class <T>
这是我的 Class。
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);
}
}
我希望分页构造函数接收类型为 <some project Custom Class>
的对象,如下所示
Pagenation PG = new Pagenation<PartsUC>(this);
我将通用 class 制作成这样
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.???);
}
}
我不知道如何将分页 Class 属性重新分配给接收到的 <PartsUC>
实例对象的属性
只需在 class 名称后添加 where 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
}
}
编辑
使接口或抽象成为那些class契约,然后where: <your interface>
你的class实现了IUC
接口,然后封装了自己的属性.
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
}
}