在我建站点中,我在wwwroot的子目录下有2个.cs文件。所述文件包含一堆实用程序函数,属于同一名称空间(即:namespace myUtils)
作为同一命名空间中这两个文件的内容,我希望能够使用另一个中的一个类,反之亦然,好像所有代码都在一个大文件中,但显然它没有#39 ;工作
示例代码:
文件1:
using System;
using System.Collections;
namespace myincludes
{
public static class myConfig
{
public static String dbaddress = "127.0.0.1";
}
}
文件2:
using System;
using System.Collections;
namespace myincludes
{
public static class myUtil
{
public static void doStuff()
{
String test = myConfig.dbaddress;
}
}
}
aspx页面:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Assembly src="./includes/file1.cs" %>
<%@ Assembly src="./includes/file2.cs" %>
<%%>
<html>
<head></head>
<body>hi</body>
</html>
我收到编译错误
Compiler Error Message: CS0103: The name 'myConfig' does not exist in the current context
基本上没有关于Assembly src指令的这种用法的文档。似乎常见的路线是生成二进制DLL,但我不是......
答案 0 :(得分:0)
public static class myUtil
{
public static string test { get{return myConfig.dbaddress;}}
public static string SomeMethod()
{
return myConfig.dbaddress;
}
}
您必须从有效位置调用代码。现在你的电话在任何方法或财产之外。它不在有效的位置。看看我上面的示例,我将它包装在属性和方法中。
答案 1 :(得分:0)
您的课程应该按照您的意图正常工作,没有任何问题。我从您的Assembly指令中假设您希望在ASPX标记中使用myConfig
?要做到这一点,而不是汇编指令,只需导入您的命名空间:
<%@ Import Namespace="myincludes" %>
然后您可以在标记中使用myConfig
:
dbaddress is: <%=myConfig.dbaddress %>
答案 2 :(得分:0)
听起来您可能正在使用网站项目,而不是预编译的Web应用程序。如果您只是将.cs文件转储到随机目录中,除非您明确引用它,否则ASP.NET将无法找到它。
尝试将文件放在Web根目录正下方的特殊目录App_Code
中。放置在那里的源文件将自动编译。有关其他说明,请参阅this MSDN page。
*:例如,ASP.NET Web窗体页面通常以@Page
指令开头
CodeFile
属性指向源文件。