问题列表 - 第13316页

是否可以在C#中为泛型制作"此类型"?

一种理论问题.很长一段时间,如果你没有理论的心情,请随意跳过.

想象一下,你有两个类,一个继承自另一个.基类是通用的,并且有一个方法,在闭合类型中必须返回此闭合类型的某个实例.

像这样(注意文字中的???):

public class Adapter<T>
{
 public virtual ??? DoSomething()
 {
  ...
 }
}

public class AdaptedString : Adapter<String>
{
 public override AdaptedString DoSomething()
 {
  ...
 }
}
Run Code Online (Sandbox Code Playgroud)

我不能这样做,因为没有办法引用将从泛型类型派生的闭合类型.(对不起破解语言,只是不知道如何表达它.)没有设置关键字???来指定此方法将返回将从此泛型类型派生的类型实例.

相反,我可以使用显式将类型名称传递给通用基础的变通方法.但它看起来多余.

public class Adapter<TThis,T>
{
 public virtual TThis DoSomething()
 {
  ...
 }
}

public class AdaptedString : Adapter<AdaptedString,String>
{
 public override AdaptedString DoSomething()
 {
  ...
 }
}
Run Code Online (Sandbox Code Playgroud)

如果在基类中我需要访问TThis实例的成员,我必须添加一个约束.这一次看起来很难看 - 请注意约束:

public class Adapter<TThis,T>
 where TThis : Adapter<TThis, T>
{
 protected int _field; 

 ...

 public …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

5
推荐指数
2
解决办法
2503
查看次数

如何在DBI查询中使用变量作为表的名称?

如何在DBI查询中使用变量作为表的名称?我知道如何使用占位符作为where子句的一部分,但是如何为表名执行此操作?

我想做这样的事情:

 my $table_name='table1';
 my $query = $dbh_cgi->prepare("select * from ?");
 $query->execute($table_name);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我最终得到MySQL语法错误,因为DBI在名称table1周围添加了引号.

perl dbi

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

如何在XML :: Simple的输出中订购标签?

这是我的情景:

我需要通过Perl生成XML,其中模式中充满了<xs:sequence>标记(即标记必须按顺序出现).我无法控制架构(第三方),每当我们添加新的CPAN模块(没有很好的方式将它们传播给客户等)时,我们已经基本上禁止这些模块出现了很多问题.添加任何新内容(如XML::Writer).

在我手上XML模块是:XML::Parser,XML::Simple,XML::XPath.

我真的很喜欢XML::Simple你创建一个hashref w/hash/arary refs数据结构然后只是吐出XML的方式.

反正有没有这样做XML::Simple?或者也许滚动我自己的代码按顺序吐出XML?似乎我最大的问题是我需要以插入顺序从hashref中提取内容,而Perl并没有真正做到这一点.我确实读到过Tie::IxHash以插入顺序拉出来的东西,但同样,我没有的模块.

感觉我有点像SOL,但肯定会感谢有人可能有的任何技巧/想法.谢谢.

xml perl

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

使用JQuery POST的Javascript函数始终返回undefined

我不知道这里发生了什么,并希望有人可以提供帮助,我确信这是一件容易的事,我只是想念.

我在javascript中有一个函数,里面有一个JQuery帖子.我想返回帖子的结果,它只是文本并将其放在变量中.数字从Post正确返回,但是当我把它放在变量中时,变量显示为"undefined".有任何想法吗?

var total = GetTotalSize();
alert(total);

function GetTotalSize(){
    var i = "";
    $.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data){
        i = data.toString();
        return i;
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery post function

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

我无法理解这一行 - 解除引用私有成员变量的地址或者什么?

我刚问了一个关于访问STL适配器的底层容器的问题.我得到了一个非常有用的答案:

template <class T, class S, class C>
    S& Container(priority_queue<T, S, C>& q) {
        struct HackedQueue : private priority_queue<T, S, C> {
            static S& Container(priority_queue<T, S, C>& q) {
                return q.*&HackedQueue::c;
            }
        };
    return HackedQueue::Container(q);
}

int main()
{
    priority_queue<SomeClass> pq;
    vector<SomeClass> &tasks = Container(pq);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法理解这一行:

return q.*&HackedQueue::c;
Run Code Online (Sandbox Code Playgroud)

这条线做什么?此外,该行怎么可以访问私有容器priority_queue传递给函数Container

c++ stl

7
推荐指数
1
解决办法
494
查看次数

如何在PyQt4中创建QString?

>>> from PyQt4 import QtCore
>>> str = QtCore.QString('Hello')
AttributeError: 'module' object has no attribute 'QString'

>>> QtCore.QString._init_(self)
AttributeError: 'module' object has no attribute 'QString' 
Run Code Online (Sandbox Code Playgroud)

是的,我读过QString Class Reference

为什么我不能导入QString来自QtCore,如文档指定?

python user-interface pyqt

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

搜索引擎 - Lucene或Solr

我们需要在我们的产品目录管理软件中集成搜索引擎.该目录预计将超过4-5百万.关系数据的记录分布在几个表中.我们的开发平台是Asp.Net 3.5,我们已经对Lucene做了一些初步的工作,发现它很好.然而,我们刚刚了解了Solr并且正在寻找一些实用的技巧来比较Lucene和Solr的实现,时间表,定期维护,性能,功能.任何指导或指示都会非常有用.谢谢.

asp.net solr lucene.net

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

C#:在catch中调试时,是否可以获得非显式声明的异常?

这是一个编译器警告,并且通常不赞成在代码中使用未使用的变量.因此,以下将生成警告,因为e未使用

try {
  throw new InvalidOpreationException();
}
catch(Exception e) {
}
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是除非您要使用它,否则不要给该例外命名:

try {
  throw new InvalidOpreationException();
}
catch(Exception) {
}
Run Code Online (Sandbox Code Playgroud)

但是这种"正确"的做事方式在调试时可能会很麻烦.您可以在catch中设置断点,但除非您停止应用程序,命名异常,重新编译并重新创建错误,否则您将不知道为什么到达那里.至少可以说这很烦人.

踢球者是该异常仍然存在,它在这个范围内没有明确的名称.有什么方法可以访问它吗?

c# debugging visual-studio

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

由另一个变量乘以变量?

我有一个我需要编写的C类程序.程序要求数量,我需要将该数量乘以用户输入的另一个变量.ac类的基本计算器脚本:)

我把它设置成这样,

    int qty; //basic quantity var
float euro, euro_result;

//assign values to my float vars
euro = .6896; //Euro Dollars
    euro_result = euro * qty; // Euro Dollars multiplied by user input qty

//start program for user
printf("Enter a quantity: ");

//alow user to input a quantity
scanf("%d", &qty);

printf("Euro:       %f \n", euro_result);
Run Code Online (Sandbox Code Playgroud)

为什么它不能按预期工作?

c calculator

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

C#在解决方案中打开文件

我认为这个问题对你们大多数人来说可能是微不足道的,但不知何故我找不到答案......所以,我在这个解决方案中有一个Visual Studio 2008解决方案foo和一个项目栏.在我的酒吧项目中,我有一个名为baz的目录,它看起来像这样:

foo dir
 |
 +-> bar dir
      |
      +-> baz dir
           |
           +-> asd file
Run Code Online (Sandbox Code Playgroud)

现在我想在bar-project中打开我的"asd文件",但需要"asd文件"的确切路径,我该如何找到它?我试过简单的"baz\asd",但它不起作用.

谢谢!

Ĵ

c# file visual-studio-2008

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