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