或者这仅仅是个人喜好的事情?我得到的是,使用这两种方法有什么特别的好处吗?
<link href="main.css" rel="stylesheet" type="text/css">
Run Code Online (Sandbox Code Playgroud)
与
<style type="text/css">
@import url('main.css');
</style>
Run Code Online (Sandbox Code Playgroud) 我有一个结构可以使用三深嵌套字典很容易地表示,就像这样
private static Dictionary<string, Dictionary<string, Dictionary<string,string>>> PrerenderedTemplates;
Run Code Online (Sandbox Code Playgroud)
结构可能会像这样使用
PrerenderedTemplates[instanceID][templategroup][templatepart]
Run Code Online (Sandbox Code Playgroud)
现在,我意识到这段代码很难阅读,因为通过查看定义语句,你无法分辨出它的用途.我可以真正看到改变它的唯一优势Dictionary<string, PrerenderedTemplate>是可读性.将每个嵌套转换为自己的类(例如class PrerenderedTemplate{} class TemplateGroup{} class TemplatePart{})将为很少(如果有的话)计算优势添加更多代码行.据我所知.
Dictionary在文档/注释中的工作方式更新
所以,受Reza的启发,但无法使用Tuples,我决定创建自己的密钥生成器并实现他的模式:
private Dictionary<string, string> PrerenderedTemplates;
private string GetPrerenderedTemplateKey(string InstanceId, string FeatureId, string OptionId)
{
return new StringBuilder(instanceId)
.Append(FormatTools.LIST_ENTRY_DELIMITER)
.Append(templategroup)
.Append(FormatTools.LIST_ENTRY_DELIMITER)
.Append(templatepart).ToString();
}
Run Code Online (Sandbox Code Playgroud)
FormatTools.LIST_ENTRY_DELIMITERUnicode专用字符在哪里0xe04d.
所以我还有另一个面条(对我而言).
我正在尝试在CMS中创建自己的自定义控件我只有部分源代码(即供应商提供给我的样本).基本上我已经创建了一个名为DataDefinitionContentextends 的类ControlBase.现在,从我从元数据中获取的东西,ControlBase扩展UserControl,所以我会认为这将没有戏剧性.任何人都可以解释为什么这可能不适合我?
我的课:
public partial class DataDefinitionContent : ControlBase, ICustomControl<DataDefinition>
{
... Stuff
}
Run Code Online (Sandbox Code Playgroud)
ControlBase:
using System;
using System.Web.UI;
namespace CMS.Web
{
public class ControlBase : UserControl
{
... Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我的ascx文件:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DataDefinitionContent.ascx.cs"
Inherits="CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" %>
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
解析器错误消息:此处不允许使用'CMS.Admin.WebUI.CustomControls.DataDefinitionContent,CoA.Admin.WebUI,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null',因为它不扩展类'System.Web. UI.UserControl".
第1行:<%@ Control Language ="C#"AutoEventWireup ="true"CodeBehind ="DataDefinitionContent.ascx.cs"
我有以下代码.CustomControlHelper通过反射生成对象的实例.在这个阶段,我们不知道我们正在处理什么类型的对象.我们知道它会是一个CustomControl,但我们不知道它是否实现了任何特定的接口,或者它是否扩展了任何其他类.以下代码尝试确定加载的控件是否实现IRichAdminCustomControl接口.
Object obj = CustomControlHelper.GetControl(cc.Id, cc.ControlClass);
if(obj != null)
{
bool isWhatWeWant = (obj is IRichAdminCustomControl);
return isWhatWeWant;
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我注意到,当我知道我有一个实现的对象时,IRichAdminCustomControl表达式的计算结果为false.
好吧,这就是它变得非常奇怪的地方.如果我在调试时检查代码,表达式的计算结果为true,但是如果我立即让代码运行并检查结果,则计算结果为false(我在下面附加了一个动画gif来说明).

有没有人像以前那样遇到过这样的奇怪现象,如果有的话,究竟是什么导致了它呢?
顺便说一句,我相信我使用的产品使用Spring.NET在CustomControlHelper中提供依赖注入.
我正在开发一个在Windows上运行的PHP项目,能够使用pecl_http而不是使用cURL并重新发明轮子以便做pecl扩展就像解析头文件所做的所有很酷的事情一样非常方便等等.
我读到的所有地方(包括PHP站点)都是pecl_http的Windows二进制文件不再与任何PHP安装打包在一起.我无法找到任何解释为什么不在任何地方.此外,http://pecl4win.php.net/已经失效多年了,我只能假设pecl4win项目已经死了.
有没有人知道发生了什么的故事,如果有一个很好的替代pecl_http,我可以在WIMP环境中运行?
我无法相信我以前从未遇到过这个.
基本上,我正在解析人工创建的文本文档中的文本,我需要解析的一个字段是日期和时间.因为我在澳大利亚,日期格式化,dd/mm/yyyy但strtotime只想将其解析为美国格式的日期.此外,爆炸式的/方法并不奏效,因为正如我所提到的,这些文件是手工打印的,其中一些是采用的形式d M yy.
我尝试了多种组合,setlocale但无论我尝试什么,语言总是设置为美国英语.
我相当确定setlocale是关键,但我似乎无法找到正确的代码.试过这些:
还有什么我可以尝试的吗?
为清楚起见:我在带有Windows框的IIS上运行.
非常感谢 :)
伊恩
例:
$mydatetime = strtotime("9/02/10 2.00PM");
echo date('j F Y H:i', $mydatetime);
Run Code Online (Sandbox Code Playgroud)
产生
2 September 2010 14:00
Run Code Online (Sandbox Code Playgroud)
我想要它产生:
9 February 2010 14:00
Run Code Online (Sandbox Code Playgroud)
我的解决方案
我在这里给出了一个答案,因为它是一个比我更容易理解的解决方案,但这就是我想出来的:
$DateTime = "9/02/10 2.00PM";
$USDateTime = preg_replace('%([0-3]?[0-9]{1})\s*?[\./ ]\s*?((?:1[0-2])|0?[0-9])\s*?[./ ]\s*?(\d{4}|\d{2})%', '${2}/${1}/${3}', $DateTime);
echo date('j F Y H:i',strtotime($USDateTime));
Run Code Online (Sandbox Code Playgroud)
因为我不能依赖用户与他们的日期条目保持一致,所以我的正则表达式更加复杂:
假设我的网站上有一个页面显示当月的媒体发布
http://www.mysite.com/mediareleases.aspx
由于进入*的原因很简单,因此必须为此页面提供一个查询字符串,其中包含当月的当前日期,以便生成此列表:
http://www.mysite.com/mediareleases.aspx?prevDays=18
因此我需要重定向客户端请求http://www.mysite.com/mediareleases.aspx到http://www.mysite.com/mediareleases.aspx?prevDays=whateverDayOfTheMonthItIs
我的问题是,如果我想谷歌索引没有查询参数的页面,我应该使用状态代码302或307来执行重定向吗?
两者都表明页面已经"暂时"移动 - 这就是我想要的,因为如果你理解我的话,页面每天都会"移动".
[*]我正在使用闭源.NET CMS的一个功能,所以我的双手并列.
在使用线程安全时,我发现自己总是在执行锁定块中的代码之前"仔细检查",我想知道我是否正在做正确的事情.考虑以下三种做同样事情的方法:
例1:
private static SomeCollection MyCollection;
private static Object locker;
private void DoSomething(string key)
{
if(MyCollection[key] == null)
{
lock(locker)
{
MyCollection[key] = DoSomethingExpensive();
}
}
DoSomethingWithResult(MyCollection[key]);
}
Run Code Online (Sandbox Code Playgroud)
例2:
private static SomeCollection MyCollection;
private static Object locker;
private void DoSomething(string key)
{
lock(locker)
{
if(MyCollection[key] == null)
{
MyCollection[key] = DoSomethingExpensive();
}
}
DoSomethingWithResult(MyCollection[key]);
}
Run Code Online (Sandbox Code Playgroud)
例3:
private static SomeCollection MyCollection;
private static Object locker;
private void DoSomething(string key)
{
if(MyCollection[key] == null)
{
lock(locker)
{
if(MyCollection[key] == null)
{
MyCollection[key] …Run Code Online (Sandbox Code Playgroud) 我正在开发一个有三个项目的解决方案,所有这些项目都在我开始调试时运行.这很烦人,因为如果我想调试一个不是我的启动项目的特定项目的一个方面,我必须每次都附加该过程.
有没有办法让调试器自动附加到所有项目?
谢谢你的帮助 :)
干杯
伊恩
我正在为使用加载插件DLL的产品创建一个插件Assembly.Load(byte[]).这一切都非常好,但这意味着我没有传统的加载调试符号的方法来逐步执行我的代码.
疯狂的是,几个月前我遇到了完全相同的问题并解决了它 - 男孩为我自己感到骄傲!所以我知道它可以做到,我只是忘记了怎么做!
对于我可能尝试过的事情,我有一些模糊的记忆,但我无法从头脑中挑逗细节: