这很好用:
var expectedType = typeof(string);
object value = "...";
if (value.GetType().IsAssignableFrom(expectedType))
{
...
}
Run Code Online (Sandbox Code Playgroud)
但我怎么检查是否值是不设置一个字符串数组expectedType
来typeof(string[])
?我想做的事情如下:
var expectedType = typeof(string);
object value = new[] {"...", "---"};
if (value.GetType().IsArrayOf(expectedType)) // <---
{
...
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
在NUnit 2.4.7中,包含了nunit.framework.extensions.dll,这使得可以进行RowTests.
下载最新版本(2.5.8)时,我找不到它.这是怎么回事?
如果我写:
var type = typeof(List<string>);
Console.WriteLine(type.Name);
Run Code Online (Sandbox Code Playgroud)
它会写:
List`1
我想要它只写:
名单
我怎样才能做到这一点?有没有更聪明的方法来做到这一点,而不必使用Substring
或类似的字符串操作功能?
我想在编写Linq查询时使用NHibernate进行分页.做这样的事情很容易:
return session.Query<Payment>()
.OrderByDescending(payment => payment.Created)
.Skip((page - 1)*pageSize)
.Take(pageSize)
.ToArray();
Run Code Online (Sandbox Code Playgroud)
但有了这个,我没有得到任何关于项目总数的信息.如果我只是做一个简单的.Count(),那将生成一个对数据库的新调用.
我发现这个答案通过使用未来来解决它.但它使用Criteria.我怎么能用Linq做到这一点?
在我的测试项目中,我有一些未在代码中分配的私有字段,但是被分配了反射.
编译时,我收到如下警告:
警告CS0649字段'CLASSNAME.FIELDNAME'永远不会被赋值,并且将始终具有其默认值null
我已经尝试添加<NoWarn>649</NoWarn>
到xproj中的第一个PropertyGroup.但我仍然得到错误.
NoWarn在DNX中不起作用吗?或者我做错了什么?这个问题还有其他解决办法吗?
我有这个代码:
Expect.Call(factory.CreateOrder())
.Return(new Order())
.Repeat.Times(4);
Run Code Online (Sandbox Code Playgroud)
每次调用此函数时,每次返回相同的实例.我希望返回差异实例.我希望能够做到这样的事情:
Expect.Call(factory.CreateOrder())
.Return(() => new Order())
.Repeat.Times(4);
Run Code Online (Sandbox Code Playgroud)
这可以用某种方式完成吗?
我有这个代码:
public class MyCollection : ICollection<string>
{
private readonly ICollection<string> _inner = new Collection<string>();
public void Add(string item)
{
_inner.Add(item);
} // <-- CodeContracts: ensures unproven: this.Count >= Contract.OldValue(this.Count)
public void Clear()
{
_inner.Clear();
} // <-- CodeContracts: ensures unproven: this.Count == 0
public bool Contains(string item)
{
return _inner.Contains(item); // <-- CodeContracts: ensures unproven: !Contract.Result<bool>() || this.Count > 0
}
public void CopyTo(string[] array, int arrayIndex)
{
_inner.CopyTo(array, arrayIndex); // <-- CodeContracts: requires unproven: arrayIndex + this.Count <= array.Length …
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
[XmlType( "Metadata" )]
[Serializable]
public class MetadataContainer : List<MetadataBase>
{
}
[XmlType( "Meta" )]
[XmlInclude( typeof( ReadonlyMetadata ) )]
[Serializable]
public abstract class MetadataBase
{
}
[XmlType( "Readonly" )]
[Serializable]
public class ReadonlyMetadata : MetadataBase
{
}
[TestFixture]
public class SerializationTests
{
[Test]
public void Can_deserialize_with_known_type()
{
const string text = @"<Metadata xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
<Meta xsi:type=""Readonly"" />
</Metadata>";
var serializer = new XmlSerializer( typeof( MetadataContainer ) );
var metas = (MetadataContainer)serializer.Deserialize( XmlReader.Create( new StringReader( text ) ) );
Assert.That( …
Run Code Online (Sandbox Code Playgroud) 在发送大量电子邮件时,我正在寻找良好的性能.
我听说正确的方法是打开一个连接发送~20封电子邮件并关闭连接.并一遍又一遍地这样做.它是否正确?
SmtpClient是如何工作的,是否为自己的生命周期打开了连接?(不是IDisposable,所以看起来不像那样)或者是否为每个发送的电子邮件打开连接?或者它是否一直打开连接?或者它是否有一些魔力可以在适当时打开和关闭连接?
我想知道所以我知道如何启动SmtpClient.作为单身人士或仅作为一大块信息......
我读过这样的文章:http : //www.codinghorror.com/blog/archives/001166.html http://www.databasejournal.com/features/mssql/article.php/3566746/Controlling-Transactions-and -locks-部分-5-SQL-2005-Snapshots.htm
根据我的理解,SQL Server有一个非常悲观的锁定策略.为了提高性能,我应该更改锁定Read Committed Snapshot.
但我找不到在哪里这样做.我在哪里更改锁定策略?
.net ×6
c# ×6
performance ×2
reflection ×2
arrays ×1
deadlock ×1
dnx ×1
email ×1
generics ×1
icollection ×1
linq ×1
locking ×1
mocking ×1
nhibernate ×1
nunit ×1
nunit-2.5 ×1
rhino-mocks ×1
rowtest ×1
smtp ×1
smtpclient ×1
sql-server ×1
types ×1
unit-testing ×1