Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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#_Vb.net To C# - Fatal编程技术网

C# '';不包含';会议';没有扩展方法'';接受类型为'的第一个参数;对象';可以找到

C# '';不包含';会议';没有扩展方法'';接受类型为'的第一个参数;对象';可以找到,c#,vb.net-to-c#,C#,Vb.net To C#,我正在进行VB.net到C#的项目转换。我有错误,有解决办法吗 1--“对象”不包含“会话”的定义,并且找不到接受“对象”类型的第一个参数的扩展方法“会话”(是否缺少using指令或程序集引用?) 2--“对象”不包含“请求”的定义,并且找不到接受“对象”类型的第一个参数的扩展方法“会话”(是否缺少using指令或程序集引用?) 我使用在线免费转换工具;我的转换代码如下 public bool DisplayMessageWindow(ref object Caller, string Mess

我正在进行VB.net到C#的项目转换。我有错误,有解决办法吗

1--“对象”不包含“会话”的定义,并且找不到接受“对象”类型的第一个参数的扩展方法“会话”(是否缺少using指令或程序集引用?) 2--“对象”不包含“请求”的定义,并且找不到接受“对象”类型的第一个参数的扩展方法“会话”(是否缺少using指令或程序集引用?)

我使用在线免费转换工具;我的转换代码如下

public bool DisplayMessageWindow(ref object Caller, string MessageToDisplay)
{
    bool functionReturnValue = false;
    long P = 0;

    functionReturnValue = false;

    if (IsCalledByMessageURL(ref Caller)) {
        return functionReturnValue;
    }

    LogMessage("Displaying Message Window (Called From): " + Caller.Request.RequestUrl.ToString());


    LogMessage("                    Message To Display : " + MessageToDisplay, false);

    Caller.Session["MessageToDisplay"] = MessageToDisplay;

    Caller.Session["RedirectURL"] = Caller.Request.Url.ToString();
    PriorURL = Caller.Session["RedirectURL"];
    SetRedirectURL(ref Caller);

    LogMessage("Modified Redirect URL to : " + Caller.Session["RedirectURL"]);

    if ((Caller.Request.Form("partssn") != null)) {
        Caller.Session["SRTSessionId"] = Caller.Request.Form("SRTSessionId");
        Caller.Session["partssn"] = Caller.Request.Form("partssn");
        Caller.Session["erid"] = Caller.Request.Form("erid");
    } else {
        Caller.Session["SessionID"] = Session.SessionID.ToString();
        Caller.Session["partssn"] = Caller.Request.Form("txtUserName");
        //Caller.Session["partssn"] = Session["loginUser"]
    }

    LogMessage("Redirect To: " + Caller.Session["RedirectURL"]);
    functionReturnValue = true;
    return functionReturnValue;
    //Caller.Response.Redirect("LoadPartData.aspx")
}
我的vb.net代码是

函数将MessageWindow(ByRef调用者作为对象,ByVal MessageToDisplay作为字符串)显示为布尔值
变暗P为长
DisplayMessageWindow=False
如果调用了DbyMessageUrl(调用者),则
退出功能
如果结束
LogMessage(“显示消息窗口(从中调用):”+Caller.Request.Url.ToString)
LogMessage(“要显示的消息:”+MessageToDisplay)
Caller.Session(“MessageToDisplay”)=MessageToDisplay
Caller.Session(“重定向Url”)=Caller.Request.Url.ToString
PriorURL=Caller.Session(“重定向URL”)
SetRedirectURL(调用者)
LogMessage(“修改重定向URL至:”+调用方.Session(“重定向URL”))
如果不是(Caller.Request.Form(“partssn”)什么都不是),那么
Caller.Session(“SRTSessionId”)=Caller.Request.Form(“SRTSessionId”)
Caller.Session(“partssn”)=Caller.Request.Form(“partssn”)
Caller.Session(“erid”)=Caller.Request.Form(“erid”)
其他的
Caller.Session(“SessionID”)=Session.SessionID.ToString()
Caller.Session(“partssn”)=Caller.Request.Form(“txtUserName”)
'Caller.Session(“partssn”)=会话(“登录用户”)
如果结束
LogMessage(“重定向到:”+调用方.Session(“重定向URL”))
DisplayMessageWindow=True
'Caller.Response.Redirect(“LoadPartData.aspx”)
端函数

如果调用方参数也是VB代码中的类型对象,则VB代码依赖于后期绑定,这使得VB代码很糟糕。在VB中,您应该有一个选项Strict On,这样代码也会在那里编译失败。如果该参数将是一个特定类型,那么在VB代码和C#代码中声明它为该类型


还有,为什么它是通过引用传递的?在方法中,您在哪里为该参数赋值?我看不到任何地方,因此没有理由通过引用传递它,即通过值传递它。同样,这也适用于VB和C#。

@jmcillhinney在这两方面都是正确的:Option Strict是一个好主意,没有理由传递ByRef参数。然而,考虑到这段代码的一般状态以及原始作者似乎喜欢免费的延迟绑定,转向Option Strict可能会像圣诞树一样点亮编译器


所以,如果您只是想通过这个端口,您可以尝试将调用者声明为
dynamic
,而不是
object
。这将是VB中参数传递方式的精确转换。

因为
ref object Caller
。这可能是另一种类型。如果您使用VB代码,这可能会有所帮助。@Eric.Y.Fan请立即检查。谢谢@jmcilhinney和@Paul keister,问题现在解决了。