gpt4 book ai didi

c# - 如何使这个通用

转载 作者:行者123 更新时间:2023-11-30 21:33:46 27 4
gpt4 key购买 nike

我想用实例的构造函数创建此类泛型类 <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 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.???);
}
}

我不知道如何将分页类属性重新分配给接收到的属性 <PartsUC>实例对象

最佳答案

只需添加 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
}
}

Generic where

编辑使接口(interface)抽象成为那些类契约,然后where: <your interface>

你的类(class)实现IUC接口(interface),然后封装自己的属性。

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
}
}

关于c# - 如何使这个通用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50994900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com