除了PNG是一种更常见的图像格式之外,是否有任何技术理由支持favicon.png与favicon.ico?
我支持所有支持PNG最爱图标的现代浏览器.
随着.net 4 中的Tuple类的增加,我一直试图决定在我的设计中使用它们是否是一个糟糕的选择.我看到它的方式,一个元组可以是编写结果类的快捷方式(我相信还有其他用途).
所以这:
public class ResultType
{
public string StringValue { get; set; }
public int IntValue { get; set; }
}
public ResultType GetAClassedValue()
{
//..Do Some Stuff
ResultType result = new ResultType { StringValue = "A String", IntValue = 2 };
return result;
}
Run Code Online (Sandbox Code Playgroud)
相当于:
public Tuple<string, int> GetATupledValue()
{
//...Do Some stuff
Tuple<string, int> result = new Tuple<string, int>("A String", 2);
return result;
}
Run Code Online (Sandbox Code Playgroud)
因此,抛开我错过了元组点的可能性,是一个Tuple设计选择不好的例子吗?对我来说,它似乎不那么混乱,但不像自我记录和干净.这意味着对于类型ResultType,后面很清楚类的每个部分意味着什么,但你有额外的代码来维护.随着Tuple<string, int>您将需要查找并弄清每一个 …
这似乎意味着"不".哪个是不幸的.
[AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class,
AllowMultiple = true, Inherited = true)]
public class CustomDescriptionAttribute : Attribute
{
public string Description { get; private set; }
public CustomDescriptionAttribute(string description)
{
Description = description;
}
}
[CustomDescription("IProjectController")]
public interface IProjectController
{
void Create(string projectName);
}
internal class ProjectController : IProjectController
{
public void Create(string projectName)
{
}
}
[TestFixture]
public class CustomDescriptionAttributeTests
{
[Test]
public void ProjectController_ShouldHaveCustomDescriptionAttribute()
{
Type type = typeof(ProjectController);
object[] attributes = type.GetCustomAttributes(
typeof(CustomDescriptionAttribute),
true);
// NUnit.Framework.AssertionException: Expected: 1 But …Run Code Online (Sandbox Code Playgroud) 只是为了好奇/方便:C#提供了两个我知道的很酷的条件表达式功能:
string trimmed = (input == null) ? null : input.Trim();
Run Code Online (Sandbox Code Playgroud)
和
string trimmed = (input ?? "").Trim();
Run Code Online (Sandbox Code Playgroud)
对于我经常遇到的情况,我想念另一个这样的表达:
如果输入引用为null,则输出应为null.否则,输出应该是访问输入对象的方法或属性的结果.
我在第一个例子中完成了这一点,但是(input == null) ? null : input.Trim()非常冗长且难以理解.
这种情况是否有另一个条件表达式,或者我可以??优雅地使用运算符吗?
自从我在大约2个月前从头开始安装Visual Studio 2010以来,在调试在IE中运行的JavaScript代码时,它的行为略有不同.
我发现这种行为非常不舒服.每次我在调试过程中发现代码中出现错误时,我都会在动态视图中修复它.我点击了保存.VS不抱怨.接下来我在IE中刷新页面,然后 - 砰 - 更改丢失,它再次加载未触及的旧版本.
我无法找到如何关闭这些观点.在我重新安装Visual Studio之前,它没有这样做.它只会为HTML文件中的内联脚本标记中的脚本创建"动态"视图.
我刚刚学到了一个关于javascript执行的重要事实,如果出现错误的话.在我开始对此做出结论之前,我最好先验证一下我是否正确.
给定一个包含2个脚本的HTML页面:
<script src="script1.js" />
<script src="script2.js" />
Run Code Online (Sandbox Code Playgroud)
SCRIPT1:
doSomething();
Run Code Online (Sandbox Code Playgroud)
SCRIPT2:
doSomeOtherThing();
Run Code Online (Sandbox Code Playgroud)
这有效地导致单个脚本作为一个单元处理:
doSomething();
doSomeOtherThing();
Run Code Online (Sandbox Code Playgroud)
特别是,如果doSomething抛出错误,执行就会中断.'script2'永远不会被执行.
这是我的"第1课" - 人们可能会认为,因为它是一个单独包含的文件,所以它不受script1的影响.但它是. =>请参阅下面的"延迟更新"
现在,如果我们按如下方式更改script2(假设我们在上面的某处包含了jQuery):
$(document).ready({ doSomeOtherThing(); });
Run Code Online (Sandbox Code Playgroud)
并将脚本放在script2之前:
<script src="script2.js" />
<script src="script1.js" />
Run Code Online (Sandbox Code Playgroud)
执行的顺序实际上仍然是'doSome(()某些时候由'doSomeOtherThing()'执行的'doSomething()'.
但是它以两个"单位"执行:
doSomething 作为文档的java脚本的一部分提前执行doSomeOtherThing 在处理document.ready事件时执行.如果doSomeOtherThing抛出异常,它将不会破坏第二个处理"单元".
(我不使用该术语,thread因为我认为所有脚本通常由同一个线程执行,或者更确切地说,这可能取决于浏览器.)
所以,我的第2课:即使JavaScript错误可能会阻止任何后续脚本执行,它也不会停止事件循环.
结论1
$(document).ready() 在定义应该独立于任何其他脚本执行的JavaScript代码块方面做得很好.
或者,换句话说:如果你有一段JavaScript,并且想要确保即使其他脚本失败也能执行它,那么将它放在一个$(document).ready().
这对我来说是新的,因为如果脚本依赖于完全加载的文档,我只会使用该事件.
结论2
更进一步,将所有脚本包装在a中$(document).ready()以确保所有脚本都"排队"执行可能是一个很好的架构决策.另外,在上述第二示例中,如果script2.js被列入后 script1.js实施例1如下所示:
<script src="script1.js" />
<script src="script2.js" />
Run Code Online (Sandbox Code Playgroud)
script1.js中的错误会阻止doSomeOtherThing()甚至被注册,因为该$(document).ready() …
我最近从MSTest转换为NUnit.我这样做了
[TestMethod]by [Test],[TestClass]by [Test]等由于我已经这样做了,Resharper没有在方法旁边显示小测试图标.如果我使用Ctrl + U运行测试,则R显示正确的计数,但实际上并不运行任何计数.
有谁有想法吗?
编辑:必须有一些搞砸了我的程序集的东西,因为我创建了一个名为Test.Web的新程序,并创建了一个只有[TestFixture]的简单类,Resharper立即识别它.
我正在寻找C#的XML源代码文档的替代方案,该文档根据XML的本质介绍了很多噪声,这些噪声在眼睛上很重要并且需要编写更多工作:
/// <summary>
/// This is text of importance. Linking to
/// <see cref="AnotherClass>is somewhat verbose.</see>
/// </summary>
/// <param name="andSo">is parameter documentation</param>
Run Code Online (Sandbox Code Playgroud)
相反,我想使用Markdown作为文档:
/// This is text of importance. Linking to [an](OtherClass) is less verbose.
///
/// Empty lines would make a new paragraph
///
/// aParameter
/// : could possibly be documented in definition-list manner
/// as in http://bit.ly/1l9ik26
Run Code Online (Sandbox Code Playgroud)
我敢打赌我之前在Stackoverflow上找到了一个问题和答案.不幸的是我不能再找到它了.我尝试了所有可以想象的搜索关键字变体而没有运气.所以我希望你们中的任何人都能找到副本.至少我的问题将通过为现有问答提供不同措辞的"代理"来增加一些价值,从而提高未来访问者查找信息的几率.
更新:
我想我终于通过使用不同的搜索引擎找到了另一个问题:Markdown用于自动生成doc?.似乎Doxygen支持Markdown.Doxygen也支持C#.但对于@Sam Harwell提到的要求,这可能不会有很长的路要走.
我不是第一个遇到这些问题的人,并会在下面列出一些参考文章,但我仍在寻找合适的解决方案.
我需要从C#Web服务调用存储过程(Oracle 10g数据库).Web服务器安装了Oracle 9i客户端,我使用的是Microsoft System.Data.OracleClient.
该过程将XML作为CLOB.当XML超过4000字节(这可能是正常的用例)时,我偶然发现了以下错误:
ORA-01460 - 要求执行未实现或不合理的转换
此外,我发现了一个很有前途的解决方法,它不直接从C#调用存储过程,而是定义了一段匿名PL/SQL代码.此代码作为OracleCommand运行.XML嵌入为字符串文字,过程调用从该段代码中完成:
private const string LoadXml =
"DECLARE " +
" MyXML CLOB; " +
" iStatus INTEGER; " +
" sErrMessage VARCHAR2(2000); " +
"BEGIN " +
" MyXML := '{0}'; " +
" iStatus := LoadXML(MyXML, sErrMessage); " +
" DBMS_OUTPUT.ENABLE(buffer_size => NULL); " +
" DBMS_OUTPUT.PUT_LINE(iStatus || ',' || sErrMessage); " +
"END;";
OracleCommand oraCommand = new OracleCommand(
string.Format(LoadXml, …Run Code Online (Sandbox Code Playgroud) 如何foreach在C#中重启循环?
例如:
Action a;
foreach(Constrain c in Constrains)
{
if(!c.Allows(a))
{
a.Change();
restart;
}
}
Run Code Online (Sandbox Code Playgroud)
restart这里是continue或者break它从开始重新启动foreach它就像将for循环的计数器再次设置为0.
这可能在C#中吗?
编辑:我要感谢Mehrdad Afshari和Mahesh Velaga让我发现我当前实现中的一个错误(index = 0),否则就不会发现它.