Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从主模板访问通用页面类属性_C#_Asp.net_Generics_Master Pages - Fatal编程技术网

C# 如何从主模板访问通用页面类属性

C# 如何从主模板访问通用页面类属性,c#,asp.net,generics,master-pages,C#,Asp.net,Generics,Master Pages,我已经创建了一个通用页面类,我的几个页面都是从这个类派生的。我使用该类读取当前请求,并使用EF 6.0选择对象列表 public class EOPKeuzelijst<TEntity> : EntityOverviewPage<TEntity> where TEntity : EntityBase, IRR_ProjectId_N, IRR_ObjectTypeId_N { public Int32? ProjectId { get;

我已经创建了一个通用页面类,我的几个页面都是从这个类派生的。我使用该类读取当前请求,并使用EF 6.0选择对象列表

public class EOPKeuzelijst<TEntity> 
    : EntityOverviewPage<TEntity> where TEntity : EntityBase,
    IRR_ProjectId_N,
    IRR_ObjectTypeId_N
{
    public Int32? ProjectId { get; set; }
    public Int32? ObjectTypeId { get; set; }

    // No more info needed..
}
公共类EOPKeuzelijst
:EntityOverview页面,其中tenty:EntityBase,
IRU项目,
IRR\u对象类型ID\N
{
public Int32?ProjectId{get;set;}
public Int32?ObjectTypeId{get;set;}
//不需要更多的信息。。
}
我的问题是,我想从附加到它的母版页文件访问这些属性

public partial class Keuzelijsten_Template : System.Web.UI.MasterPage
{
    private EOPKeuzelijst<What to do here??> page;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.page = (EOPKeuzelijst<What to do here??>)this.Page;
        this.page.ProjectId

        Response.Write(this.Page.Title);
    }
}
public分部类Keuzelijsten_模板:System.Web.UI.MasterPage
{
私人EOPKeuzelijst页面;
受保护的无效页面加载(对象发送方、事件参数e)
{
this.page=(EOPKeuzelijst)this.page;
这是我的
回答。写(本页标题);
}
}
我自己找不到解决办法。。有人知道如何将this.Page转换为我的泛型Page类,或者如何以其他方式访问这些类吗


提前谢谢

您将无法这样做,因为该类在运行时发生更改,您将无法在编译时知道它是什么。我建议添加泛型类将实现的接口,该接口具有ProjectID getter:

public interface IEOPHasProject { int? ProjectId { get; } }

public class EOPKeuzelijst<TEntity>
    : EntityOverviewPage<TEntity> where TEntity : EntityBase,
    IRR_ProjectId_N,
    IRR_ObjectTypeId_N,
    IEOPHasProject
{
    public Int32? ProjectId { get; set; }
    public Int32? ObjectTypeId { get; set; }

    // No more info needed..
}


public partial class Keuzelijsten_Template : System.Web.UI.MasterPage
{
    private IEOPHasProject page;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.page = (IEOPHasProject)this.Page;
        this.page.ProjectId // will work

        Response.Write(this.Page.Title);
    }
}
公共接口IEOPHasProject{int?ProjectId{get;}
公共类EOPKeuzelijst
:EntityOverview页面,其中tenty:EntityBase,
IRU项目,
IRR\u对象类型ID\N,
埃及项目
{
public Int32?ProjectId{get;set;}
public Int32?ObjectTypeId{get;set;}
//不需要更多的信息。。
}
公共部分类Keuzelijsten_模板:System.Web.UI.MasterPage
{
私人项目页面;
受保护的无效页面加载(对象发送方、事件参数e)
{
this.page=(IEOPHasProject)this.page;
this.page.projectd//将起作用
回答。写(本页标题);
}
}

如何使用泛型类型约束实现接口?它给了我这个错误“类型“”不能用作泛型类型或方法“EOPKeuzelijst”中的类型参数“tenty”。没有从“”到“Pages.Overview.EOPHasProject”的隐式引用转换。当我复制准确的EOPKeuzelijst声明时,它在第二个问题上给了我一个错误:这是该问题的答案。。Thnx!