如何创建具有类型' toString'的变量名称的动态类?

时间:2017-01-18 02:46:59

标签: c#

感谢您阅读我的文章。

我在公司网页上使用了UserControl的asp.net。 UserControl不能使用继承类,因为它已经继承了System.Web.UI.UserControl类。

所以我想创建一个带有父页面名称的动态类。

以下是我的代码。

string userNo = string.Empty;
string virtualPath = Page.AppRelativeVirtualPath.ToString();
virtualPath = virtualPath.Substring(virtualPath.LastIndexOf("/") + 1);

//I want to use the generated class by referring to the variable name of "virtualPath" in the "here" text below.
//userNo = Uact.Framework.Common.Decryptor.Decrypt((("here!")Context.Handler).UserNo);

switch (virtualPath.ToUpper().Trim()){
    case "PROJECTSIGNWRITE.ASPX" :
        userNo = Uact.Framework.Common.Decryptor.
                    Decrypt(((ProjectSignWrite)Context.Handler).UserNo);
        break;

    case "PROJECTREPORTVIEW.ASPX" :
        userNo = Uact.Framework.Common.Decryptor.
                    Decrypt(((ProjectReportView)Context.Handler).UserNo);
        break;

    case "PROJECTCOMPLETE.ASPX" :
        userNo = Uact.Framework.Common.Decryptor.
                    Decrypt(((ProjectComplete)Context.Handler).UserNo);
        break;
}

1 个答案:

答案 0 :(得分:0)

不使用继承,而是使用接口。

使用属性UserNo

声明一个接口
public interface IHasUserNo
{
     string UserNo {get; set;}
}

然后让您的类(例如ProjectSignWrite)实现此接口。

public class ProjectSignWrite : UserControl, IHasUserNo
{
    .....
}

然后你可以简单地写:

userNo = Uact.Framework.Common.Decryptor.Decrypt(((IHasUserNo)Context.Handler).UserNo);