我在td
元素中使用绝对定位的内容时发现了一个问题.该td
元素未被识别为定位元素,因此内容相对于该元素定位body
.此问题仅出现在FireFox中,并且预期的布局在其他浏览器中可见 - jsfiddle.
对它进行一些挖掘似乎与使用FireFox display:table-cell
作为表格单元格的默认显示类型有关.我可以通过将显示更改为block
或通过添加div
容器来充当内容的定位容器来解决此问题.
有没有理由避免将单元格的显示类型更改为block
?我更愿意使用此方法,而不是添加其他元素来纠正一个浏览器中的问题.
这与表格单元格中div样式绝对描述的问题不同,或者为什么"position:absolute"时"display:table-cell"被破坏.
我目前正在使用IoC在项目中提供存储库的具体实现.我读过的所有示例都使用接口作为服务的定义.但是,阅读Microsoft的建议后,建议您更喜欢接口上的抽象类.
我发现这与模板模式相结合有用,可以减少重复.例如,给一个Product
具有属性的类IsActive
我可以使用存储库的接口,例如:
interface IProductRepository
{
IEnumerable<Product> Load();
}
Run Code Online (Sandbox Code Playgroud)
如果一个常见的任务是加载活动产品,那么我需要这样做:
IEnumerable<Product> activeProducts = repository.Load().Where(x => x.IsActive);
Run Code Online (Sandbox Code Playgroud)
repository
具体实施在哪里.如果我使用了一个抽象类,例如:
abstract class ProductRepository
{
protected abstract IEnumerable<Product> LoadCore();
public IEnumerable<Product> Load()
{
return LoadCore().Where(x => x.IsActive);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以使用加载活动产品
IEnumerable<Product> activeProducts = repository.Load();
Run Code Online (Sandbox Code Playgroud)
加载产品信息的所有实现都在派生的contrete类中,ProductRepository
因此不存在与持久层的耦合.如果发现存在另一个通常执行的活动,则可以将其添加到基类中,作为使用接口无法完成的非破坏性更改.
使用接口而不是抽象类有什么好处吗?我可以遇到使用抽象类的哪些潜在缺点?
我使用Castle Windsor作为IoC控制器和.Net framework 3.5.
是否有一种简单的方法以第1,第2,第3,......格式显示日期的日期部分?我怀疑通过自定义日期时间格式字符串没有这样做的方法(我会很高兴错了),所以有人实现了这样做的方法吗?
T FindBy(object key);
Run Code Online (Sandbox Code Playgroud)
上面的代码是什么?
T this[object key] { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是什么以上代码?有人说这是一个我不完全理解的索引器!