问题列表 - 第13111页

使用C#3.0,如何使用泛型集合编写基于接口的代码?

我想编写解密和干净的代码,我知道通过编程到接口而不是实现,我的代码将更灵活和可扩展.所以,而不是写如下方法:

  bool IsProductAvailable(ProductTypeA product);
Run Code Online (Sandbox Code Playgroud)

我写的方法如下:

  bool IsProductAvailable(IProduct product);
Run Code Online (Sandbox Code Playgroud)

只要我的产品实现IP产品:

  class ProductTypeA : IProduct
Run Code Online (Sandbox Code Playgroud)

我应该没事.一切顺利,直到我开始使用泛型集合.由于C#3.0不支持协变和逆变,即使ProuctTypeA和ProductTypeB都实现了IProduct,也不能将List放入List中.这很麻烦,因为很多时候我想写一些类似的东西:

bool AreProductsAvailable(List<IProduct> products);
Run Code Online (Sandbox Code Playgroud)

这样我就可以通过以下方式检查产品的可用性:

List<ProductA> productsArrived = GetDataFromDataabase();
bool result = AreProductsAvailable(productsArrived);
Run Code Online (Sandbox Code Playgroud)

我想只编写一个适用于所有IProduct集合的AreProductsAvailable()方法.

我知道C#4.0将支持协变和逆变,但我也意识到其他库似乎已经解决了问题.例如,我正在尝试ILOG Gantt甘特图控件,并发现他们有很多集合接口,如下所示:

IActivityCollection
ILinkCollection 
Run Code Online (Sandbox Code Playgroud)

所以看起来他们的方法是使用接口包装泛型集合.因此,我可以这样做,而不是"bool AreProductsAvailable(List products);"

bool AreProductsAvailable(IProductCollection products);
Run Code Online (Sandbox Code Playgroud)

然后编写一些代码,以便IProductCollection获取IProduct的任何通用集合,无论是List还是List.

但是,我不知道如何编写一个"魔术"的IProductCollection接口.: - <(ashame)....

有人能给我一些光明吗?这已经困扰了我很久了,我也想做"正确的事".非常感谢!

c# generics collections

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

有人知道CSS分析工具吗?

我正在寻找一种可以分析大型网站并寻找孤儿css的工具.

我正在处理这个经历过几次UI更新的项目.刮掉整个东西并重做它都需要永远.我想要的是一个工具,它可以读取一个css文件,然后让你浏览网站,跟踪使用的定义和频率.

然后我可以浏览css文件并找到我使用的代码,并确定它是否确实已弃用并且可以删除.

思考?

css

6
推荐指数
1
解决办法
4695
查看次数

ASP MVC:IController Dispose()何时调用?

我正在对我的一个较大的MVC应用程序进行重大的重构/速度调整.它已经部署到生产几个月了,我开始等待连接池中的连接超时.我已将问题跟踪到未正确处理的连接.

鉴于此,我已经对我的基本控制器进行了此更改:

public class MyBaseController : Controller
{
    private ConfigurationManager configManager;  // Manages the data context.

    public MyBaseController()
    {
         configManager = new ConfigurationManager();
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (this.configManager != null)
            {
                this.configManager.Dispose();
                this.configManager = null;
            }
        }

        base.Dispose(disposing);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我有两个问题:

  1. 我是否介绍了竞争条件?由于configManager管理DataContextIQueryable<>参数公开给视图,我需要确保Dispose()在视图完成渲染之前不会在控制器上调用.
  2. MVC框架是否在Dispose()呈现视图之前或之后调用Controller?或者,MVC框架是否将其留给了GarbageCollector?

asp.net-mvc garbage-collection idisposable linq-to-sql

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

在PHP中的html属性的正则表达式

我试图在php中解析一串HTML标记属性.可能有3种情况:

attribute="value"  //inside the quotes there can be everything also other escaped quotes
attribute          //without the value
attribute=value    //without quotes so there are only alphanumeric characters
Run Code Online (Sandbox Code Playgroud)

有人可以帮我找到一个正则表达式,可以在第一个匹配中获得属性名称,在第二个匹配属性值(如果它存在)?

html php regex php4

0
推荐指数
1
解决办法
3940
查看次数

可以多次使用google.setOnLoadCallback吗?

我正在使用ASP.NET MVC构建一个站点,我有部分视图使用jQuery来做各种事情.我想改用Google的AJAX API并使用他们的加载器加载jQuery.但是,我注意到我再也无法使用$(document).ready()了,因为Google的加载程序指定了一个回调google.setOnLoadCallback().

这对我来说有点问题,因为我有$(document).ready()各种部分视图,因为他们做了不同于自己的事情,我不希望父视图知道.

我可以指定多个回调,只是换出$(document).ready()用的google.setOnLoadCallback(someUniqueCallbackFunction)

这是处理这种情况的理想方式还是还有其他优先选择?

asp.net-mvc jquery google-ajax-api

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

我为什么要在PHP中使用按位/位掩码?

我正在使用PHP的用户角色/权限系统来处理脚本.

下面是使用我在phpbuilder.com上找到的权限的位掩码方法的代码.

在那个部分下面是一个更简单的版本w3hich可以做基本相同的事情没有位部分.

许多人建议在PHP中使用位操作符等设置和其他东西,但我从来没有理解为什么.在下面的代码中,使用第一个代码而不是第二个代码有什么好处

<?php
/**
 * Correct the variables stored in array.
 * @param    integer    $mask Integer of the bit
 * @return    array
 */
function bitMask($mask = 0) {
    $return = array();
    while ($mask > 0) {
        for($i = 0, $n = 0; $i <= $mask; $i = 1 * pow(2, $n), $n++) {
            $end = $i;
        }
        $return[] = $end;
        $mask = $mask - $end;
    }
    sort($return);
    return $return;
}


define('PERMISSION_DENIED', 0);
define('PERMISSION_READ', 1);
define('PERMISSION_ADD',  2); …
Run Code Online (Sandbox Code Playgroud)

php bit-manipulation bitmask

18
推荐指数
3
解决办法
1万
查看次数

是否有适合临时数据库的地方?

我们一直在生产数据库服务器上存储我们的临时数据库,其思路是尽可能与生产相同.

最近,一些评论让我质疑这个想法.由于我有可能错误地将某些东西用于生产,因此不要将它们放在同一台服务器上是有意义的.

我的Staging数据库是否真的与我的开发数据库位于同一服务器上,而不是与生产相同的服务器?

database sql-server database-design

6
推荐指数
2
解决办法
1856
查看次数

ORACLE - 如何创建在NLS_COMP = Linguistic和NLS_Sort = Binary_CI时将使用的索引

默认情况下,Oracle使用创建的索引

当我改为NLS_COMP = Linguistic和NLS_Sort = Binary_CI时,我得到全表扫描.

我在某处读到了使用(nlssort(name,'NLS_SORT = BINARY_CI'))创建索引; 会工作.

正如我在下面的尝试所示,并非如此.即使我强迫它,性能似乎也不是我所期望的.这是一个简单的例子我喜欢为具有数百万行的表解决这个问题,因此全表扫描会很糟糕.

所以问题是如何构建索引以便使用它们.

谢谢

- 安装X.

create table x ( name varchar2(30)) ;
insert into x select table_name from all_tables;
create index x_ix on x (name);
create index x_ic on x (nlssort(name, 'NLS_SORT=BINARY_CI'));
/   
Run Code Online (Sandbox Code Playgroud)

- 默认设置

ALTER SESSION SET NLS_COMP=BINARY;
ALTER SESSION SET NLS_SORT=BINARY; 
/
set autotrace on 
/
select * from X where NAME like 'x%';

--0 rows selected
--
---------------------------------------------------------------------------
--| Id  | Operation        | Name | Rows  | …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

5
推荐指数
1
解决办法
6297
查看次数

web2py未来?

鉴于web2py的大小以及缺乏资源和企业支持,您认为将web2py作为我所知道的唯一Web开发框架是可取的.我正在考虑学习Ruby on Rails或web2py作为我需要为学校项目创建的网站.

python django ruby-on-rails web2py

15
推荐指数
5
解决办法
8935
查看次数

什么是静态方法继承的正确替代方法?

我知道C#不支持静态方法继承.我还阅读了许多讨论(包括此处),其中开发人员声称需要此功能,典型的响应是"如果您需要静态成员继承,那么您的设计就存在缺陷".

好吧,鉴于OOP不希望我甚至考虑静态继承,我必须得出结论,我对它的明显需求指出了我的设计中的错误.但是,我被困住了.我真的很感激帮助解决这个问题.这是挑战......

我想创建一个抽象基类(我们称之为Fruit),它封装了一些复杂的初始化代码.此代码不能放在构造函数中,因为其中一些代码将依赖于虚方法调用.

Fruit将由其他具体类(Apple,Orange)继承,每个类必须公开标准工厂方法CreateInstance()以创建和初始化实例.

如果静态成员继承是可行的,我会将工厂方法放在基类中,并使用对派生类的虚方法调用来获取必须从中初始化具体实例的类型.客户端代码可以简单地调用Apple.CreateInstance()来获取完全初始化的Apple实例.

但显然这是不可能的,所以有人可以解释我的设计需要如何改变以适应相同的功能.

.net c# inheritance static

79
推荐指数
2
解决办法
4万
查看次数