是否可以在ASP.NET C中继承使用#

时间:2016-05-28 19:00:43

标签: c# asp.net oop inheritance c#-4.0


我有一个具有解决方案和类库的项目 我创建了一个名为 ManagerClass.cs 的BaseClass,它继承自 System.Web.UI.Page ,使这个类成为我所有的BaseClass,在类库中我有一个类名为 AlertMessage.cs 我希望直接从任何继承的类中使用此类作为示例: 这是我的默认类继承自Manager类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CustomModalMessages
{
    public partial class Default : ManagerClass
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnPopUp_Click(object sender, EventArgs e)
        {
            AlertMessage.Show("", false, Page, GetType());
        }
    }
}

我的经理班也是这样的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SharedComponent;

namespace CustomModalMessages
{
    public class ManagerClass : System.Web.UI.Page
    {
        protected override void OnLoad(EventArgs e)
        {
            AlertMessage.Show("", true, Page, GetType());

            base.OnLoad(e);
        }

        protected override void OnError(EventArgs args)
        {
            Exception ex = Server.GetLastError().GetBaseException(); 

            string sStackTrace = ex.StackTrace.ToString();
            string sErrorDate = DateTime.UtcNow.ToString();
            string sErrorPage = ex.Source.ToString();
            string sErrorMessage = ex.Message.ToString();
        }
    }
}

你可以看到我做了一个Using SharedComponent;我想在所有继承的类中使用public而不调用Using。

我的层次结构如下所示:  Solution Explorer Hierarchy

提前致谢

1 个答案:

答案 0 :(得分:2)

db.inventory.find( { field: { $in: [ "1", "2"] } } ) 语句不能在C#中继承。他们甚至没有编译成代码 - 他们只是开发人员的一个实用工具,因此他不必输入完全限定的类型名称(例如$code = 200; $text = 'OK'; $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); header($protocol . ' ' . $code . ' ' . $text); $GLOBALS['http_response_code'] = $code; echo 'SUCCESS';

使用Try Roslyn您可以看到此类:

using

编译为

SharedComponent.AlertMessage

方法using System; public class C { public void M() { Console.WriteLine(""); } } 内的.class public auto ansi beforefieldinit C extends [mscorlib]System.Object { // Methods .method public hidebysig instance void M () cil managed { // Method begins at RVA 0x2050 // Code size 13 (0xd) .maxstack 8 IL_0000: nop IL_0001: ldstr "" IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: ret } // end of method C::M .method public hidebysig specialname rtspecialname instance void .ctor () cil managed { // Method begins at RVA 0x205e // Code size 8 (0x8) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: nop IL_0007: ret } // end of method C::.ctor } // end of class C 行是此处的兴趣点。 IL代码中指定了完全限定的类型名称,无法找到IL_0006语句。