小编sdu*_*ooy的帖子

我如何在.NET中表示仅限时间的值?

有没有一种方法可以代表.NET中没有日期的时间值?例如,指示商店的营业时间?

TimeSpan表示范围,而我只想存储时间值.使用DateTime指示,这将导致新的DateTime(1,1,1,8,30,0)并非真正的希望.

.net c# time datetime

219
推荐指数
9
解决办法
18万
查看次数

如何确定类型是否实现特定的通用接口类型

假设以下类型定义:

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}
Run Code Online (Sandbox Code Playgroud)

当只有受损的类型可用时,如何确定类型是否Foo实现了通用接口IBar<T>

.net c# reflection

211
推荐指数
7
解决办法
8万
查看次数

GetProperties()返回接口继承层次结构的所有属性

假设以下假设的继承层次结构:

public interface IA
{
  int ID { get; set; }
}

public interface IB : IA
{
  string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用反射并进行以下调用:

typeof(IB).GetProperties(BindingFlags.Public | BindingFlags.Instance) 
Run Code Online (Sandbox Code Playgroud)

只会产生接口的属性IB,即" Name".

如果我们要对以下代码进行类似的测试,

public abstract class A
{
  public int ID { get; set; }
}

public class B : A
{
  public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

该调用typeof(B).GetProperties(BindingFlags.Public | BindingFlags.Instance)将返回PropertyInfo" ID"和" Name" 的对象数组.

有没有一种简单的方法来查找接口的继承层次结构中的所有属性,如第一个示例中所示?

.net c# reflection

88
推荐指数
3
解决办法
4万
查看次数

使用xUnit对单元测试异常消息进行测试

我目前正将我的MsTest单元测试转换为xUnit.使用xUnit,有没有办法测试异常消息?测试异常消息是否正确,而不仅仅是异常类型?

unit-testing mstest xunit

45
推荐指数
2
解决办法
1万
查看次数

Git还是Subversion?

假设我正在使用Visual Studio在家中启动一个新的Web项目,即哪个版本控制系统,即.Git或Subversion会更好用吗?哪一个设置复杂度最低?

svn git visual-studio

19
推荐指数
4
解决办法
4360
查看次数

在创建模拟时如何组合两个接口?

我们正在使用Rhino Mocks执行一些单元测试,需要模拟两个接口.在对象上只实现了一个接口,而另一个接口是使用面向方面的方法动态实现的.是否有一种简单的方法可以动态组合这两个接口,以便可以创建模拟并为两个接口创建方法?

.net c# rhino-mocks

16
推荐指数
3
解决办法
4498
查看次数

IEnumerable <TSource> Concat <TSource>是否保留元素的顺序?

假设两个列表A和B使得A =(1,2,3)和B =(4,5,6).A.Concat(B)会保留订单,结果是(1,2,3,4,5,6)吗?

.net c# linq

13
推荐指数
2
解决办法
3933
查看次数

使用基类进行单元测试设置和拆卸

假设Visual Studio.NET 2008和MsTest用于运行单元测试.当系统基于服务容器并且依赖注入单元测试时,自然需要建立服务.

是否应该在基类中设置这些服务,所有单元测试都来自或在每个单元测试类中.如果它们应该在基类中,是否有一种方法可以执行TestInitializeClassInitialize方法而不需要从派生类中调用它们,例如base.Initialise?

.net unit-testing mstest

12
推荐指数
2
解决办法
4163
查看次数

如何在我的项目中实现强大的每个请求会话模式,同时专注于信息隐藏?

我目前正在构建一个ASP.NET MVC项目,NHibernate作为其持久层.

目前,已经实现了一些功能,但只使用本地NHibernate会话:访问数据库(读取或写入)的每个方法都需要使用"using()"子句实例化自己的NHibernate会话.

问题是我想利用NHibernate的延迟加载功能来提高项目的性能.

这意味着每个请求都会打开一个NHibernate会话,直到呈现视图为止.此外,必须支持同时请求(同时多个会话).

我怎样才能尽可能干净地实现这一目标?

我在网上搜索了一下,了解了每个请求的会话模式.我看到的大多数实现使用某种Http*(HttpContext等)对象来存储会话.此外,使用Application_BeginRequest/Application_EndRequest函数很复杂,因为当我只想为每个请求实例化一次会话时,它们会针对每个HTTP请求(aspx文件,css文件,js文件等)被触发.

我担心的是我不希望我的视图或控制器能够访问NHibernate会话(或者更常见的是NHibernate命名空间和代码).这意味着我不想在控制器级别处理会话,也不想在视图级别处理会话.

我有几个选择.哪一个看起来最好?

  • 使用在控制器操作之前和之后触发的拦截器(如GRAILS).这些将打开和关闭会话/交易.这可能在ASP.NET MVC世界中吗?
  • 在Web上下文中使用NHibernate提供的CurrentSessionContext Singleton.以这个页面为例,我认为这很有希望,但仍需要控制器级别的过滤器.
  • 使用HttpContext.Current.Items存储请求会话.这与Global.asax.cs中的几行代码相结合,可以轻松地为我提供请求级别的会话.但是,这意味着将在NHibernate和我的视图(HttpContext)之间注入依赖项.

非常感谢你!

nhibernate asp.net-mvc session information-hiding

11
推荐指数
1
解决办法
6788
查看次数

重构的目标?

重构代码的目标是什么?它只是为了增强代码结构吗?它是为未来的变化铺平道路吗?

refactoring

10
推荐指数
1
解决办法
2714
查看次数