C# 如何将参数化构造函数对象分配给接口中的类类型属性协定

C# 如何将参数化构造函数对象分配给接口中的类类型属性协定,c#,C#,将参数化对象指定给类类型属性协定时出错。下面是代码 internal interface IDisplayContents : IHttpHandler { MenuRoute propMenuRoute { get; set; } } public class MenuRoute { private string _OriginalRoute = string.Empty; private string[] _RouteNodes = null; priva

将参数化对象指定给类类型属性协定时出错。下面是代码

internal interface IDisplayContents : IHttpHandler
{
   MenuRoute propMenuRoute { get; set; }
}


public class MenuRoute
{

    private string _OriginalRoute = string.Empty;
    private string[] _RouteNodes = null;
    private bool _RouteFound;

    public string OriginalRoute
    {
        get { return _OriginalRoute; }
    }
    public string[] RouteNodes
    {
        get { return _RouteNodes; }
    }
    public bool RouteFound
    {
        get { return _RouteFound; }
    }

    public MenuRoute(string route, bool routeFound)
    {
        _RouteFound = routeFound;
        _RouteNodes = GlobalObjects.SplitString(route,"/");
        if (_RouteNodes.Length .Equals(0))
            _RouteNodes = new string[] { "/" };


        for (int nodeIndex = 0; nodeIndex <= _RouteNodes.Length - 1; nodeIndex++)
        {

            _RouteNodes[nodeIndex] = GlobalObjects.SplitString(_RouteNodes[nodeIndex].ToString(), ".aspx")[0];

        }
        _OriginalRoute = route;

    }

public class UrlRouteHandler : IRouteHandler
{


    private string _virtualPath;
    public UrlRouteHandler(string virtualPath)
    {
        _virtualPath = virtualPath;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {



        IDisplayContents displayContent = BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(Page)) as IDisplayContents;

        if (requestContext.RouteData.Values["notImplementedUrl"] != null)
        {
            displayContent.propMenuRoute = new MenuRoute("", false);

        }
        else
        {
            RouteValueDictionary routes = requestContext.RouteData.Values;
            int intLevels = routes.Count;
            string strRoute = string.Empty;


            for (int intIterate = 1; intIterate <= intLevels; intIterate++)
            {
                strRoute += routes["level" + intIterate.ToString()] as string + "/";

            }

            displayContent.propMenuRoute = new MenuRoute(strRoute, true);
There comes the error

请提供帮助

我假设错误消息中有一个输入错误,而其他信息实际上是:

其他信息:对象引用未设置为对象的实例。displayContent.propMenuRoute=newmenuroute(strRoute,True)

否则代码将无法编译,因为
IDisplayContents
没有属性
MenuRoute


设置
displayContent
的唯一位置是

IDisplayContents displayContent = BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(Page)) as IDisplayContents;
这意味着,如果
displayContent
null
,则
CreateInstanceFromVirtualPath
方法返回null,或者它返回的对象类型不实现
IDisplayContents
接口


虽然在不知道方法的实现的情况下,我无法确定,
CreateInstanceFromVirtualPath
似乎返回了一个
Page
对象,而
Page
没有实现
IDisplayContents

,我假设错误消息中有一个输入错误,并且附加信息实际上是:

其他信息:对象引用未设置为对象的实例。displayContent.propMenuRoute=newmenuroute(strRoute,True)

否则代码将无法编译,因为
IDisplayContents
没有属性
MenuRoute


设置
displayContent
的唯一位置是

IDisplayContents displayContent = BuildManager.CreateInstanceFromVirtualPath(_virtualPath, typeof(Page)) as IDisplayContents;
这意味着,如果
displayContent
null
,则
CreateInstanceFromVirtualPath
方法返回null,或者它返回的对象类型不实现
IDisplayContents
接口

虽然在不知道方法的实现的情况下我无法确定,但似乎
CreateInstanceFromVirtualPath
返回了
Page
对象,而
Page
没有实现
IDisplayContents