问题是这样的,为什么我需要在我的 Site.Master 文件上添加一个“import”指令来获得 Intellisense,而 html 助手在没有它的情况下也能工作。
使用没有命名空间的简单 C# 字符串扩展方法 == 没问题。但是,我想将此扩展放在命名空间中以成为一名优秀的程序员。
如果我将它包装在一个命名空间中,您必须做几件事。这是我的扩展:
namespace MySystemCore
{
public static class StringExtensions
{
public static string F(this string s, params object[] args)
{
return string.Format(s, args);
}
}
}
因此,通过反复试验,我让它工作了,但我想分享我的观察结果。希望它可以在将来帮助其他人。
注意:我在 Site.Master
中使用扩展方法添加“使用 MySystemCore;”到 Site.Master.cs 文件(代码隐藏文件)
- 运行时错误,未找到扩展方法
将“
中的配置 block<add namespace="MySystemCore">
”添加到<namespaces>
web.config- 有效,没有智能感知
合并 #1 和 #2
- 有效,没有智能感知
将“
<%@ Import Namespace="MySystemCore" %>
”添加到Site.Master 文件- 可以使用智能感知
最佳答案
这是一个 VS 限制,当您将它添加到 web.config 中的
但为了完整起见,我将讨论它的原因:
关于包装在命名空间困境中的 "site.master"模板中的 C# 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/303938/