小编Ste*_*oss的帖子

是否可以在C#中调用泛型参数的方法?

在C++中,您可以从模板参数调用方法,如下所示:

template<class T> class foo
{
  T t;
  t.foo();
}
Run Code Online (Sandbox Code Playgroud)

但在C#中,看起来这是不可能的:

class foo<T>
{
  T t;
  public void foo() { 
    t.foo(); // Generates a compiler error
  }
};
Run Code Online (Sandbox Code Playgroud)

我想这在C#中可能是不可能的,是吗?

c#

3
推荐指数
2
解决办法
225
查看次数

在Selenium中,ClickAndHold与webdriver和chrome一起使用吗?

我正在尝试使用Selenium Webdriver(2.15)进行单击并拖动事件.它在使用FF时工作正常,但在Chrome中却没有.在Chrome中,它似乎没有任何效果.这是我的代码的样子:

Actions builder = new Actions(GuiOps.driver);
builder.MoveToElement(fromElem).ClickAndHold().MoveToElement(toElem).Release().Build().Perform();
Run Code Online (Sandbox Code Playgroud)

有没有人让ClickAndHold()成功使用Chrome?

selenium

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

如何在ac#函数中指定List <>参数的默认值?

我有一个C#方法,它接受一堆参数,所有参数都有默认值.其中一个参数是List.我无法弄清楚如何指定List应该默认为空.这是它的样子:

    public static void execute(
        String condition = "Unnamed condition",
        List<String> messages,
        Object actual    = null,
        Object expected  = null)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何指定默认情况下消息应为空.当我进入:

...
List<String> messages = new List<String> ()
...
Run Code Online (Sandbox Code Playgroud)

它抱怨"'messages'的默认参数值必须是编译时常量".

有任何想法吗?

c#

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

在Selenium webdriver.switchto()中,"relative = top"会产生错误吗?

我正在使用Selenium WebDriver(v2.2)"切换"到"顶部"框架,如下所示:

webdriver.SwitchTo().Frame("relative=top");
Run Code Online (Sandbox Code Playgroud)

这会生成错误消息:

Unable to locate frame: relative=top
Run Code Online (Sandbox Code Playgroud)

这可能是因为我使用的页面没有框架吗?

编辑

不幸的是,涉及窗口切换的两种解决方案均

webdriver.SwitchTo().Window(winHandle);
webdriver.SwitchTo().DefaultContent();
Run Code Online (Sandbox Code Playgroud)

严格来说,实际上,他们并没有失败.但是,这就是问题所在:假设我在一帧内获取一个IWebElement.这是代码大致的样子:

descend-into-the-frame
grab-the-element
ascend-out-of-the-frame-to-the-top
use-the-element
Run Code Online (Sandbox Code Playgroud)

当我使用-the-element时,我得到一个"缓存中不存在元素"异常.这是因为从框架上升到顶部会切换窗口,从而清除缓存.真烦人 不过我找到了一个解决方法:

ascend-out-of-the-frame-to-the-top
descend-into-the-frame
grab-the-element
use-the-element
Run Code Online (Sandbox Code Playgroud)

这仍然意味着我必须注意元素不在缓存的情况.但至少只要我在拿取元素后立即使用它,我就可以了.

感谢大家的帮助!

selenium webdriver selenium-webdriver

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

如何在TFS2010中的MSBuild参数中进行变量替换?

我正在尝试在VS/TFS2010中配置团队构建.我希望MSBuild参数包含以下内容:

/p:Changeset=BuildDetail.SourceGetVersion
Run Code Online (Sandbox Code Playgroud)

我希望MSBuild扩展"BuildDetail.SourceGetVersion".我知道如何通过编辑xaml来做到这一点,但我希望有一种方法可以让它无需工作.有任何想法吗?

msbuild tfs tfsbuild

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

perl-to-python互操作的建议?

我们在Perl中有相当大的代码库.对于可预见的未来,我们的代码库将保留在Perl中.但是,我们正在考虑添加基于GUI的仪表板实用程序.我们正在考虑用Python编写仪表板(使用tkinter或wx).但问题是,我们希望利用Python GUI中现有的Perl代码库.

所以...关于如何实现这一点的任何建议?我们正在考虑几个选择:

  1. 编写模仿函数调用的可执行文件(在Perl中); 在python中调用那些Perl可执行文件作为系统调用.
  2. 在Python仪表板内即时编写Perl可执行文件,并调用(临时)Perl可执行文件.
  3. 找到某种Perl-to-Python转换器或绑定.

还有其他想法吗?我很想知道其他人是否遇到过这个问题.不幸的是,目前不能将代码库本身转换为Python.

python perl

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

如何参数化linq查询?

我有一个数据结构,它是一个哈希表列表,如下所示:

List<Hashtable> lh = new List<Hashtable>();
Run Code Online (Sandbox Code Playgroud)

这个容器的一个相当简单的LINQ查询:

var query = from h in lh where h["foo"] == "bar" select h;
Run Code Online (Sandbox Code Playgroud)

有没有办法参数化where子句?就像是:

var where_clause = where h["foo"] == "bar";
var query = from h in lh where_clause select h;
Run Code Online (Sandbox Code Playgroud)

linq

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

当通过method.invoke()调用方法时,为什么自定义异常更改为System.Exception?

我编写了一个自定义异常AbortTestException,这非常简单:

class AbortTestException : Exception
{
    public AbortTestException(string message) 
        : base(message) { }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个将抛出它的函数:

class Foo
{
    public void Throws()
    {
        throw new AbortTestException("hi");
    }
}
Run Code Online (Sandbox Code Playgroud)

并且通过方法引用调用Throws():

class Program
{
    static void Main(string[] args)
    {
        Type myType = (typeof(Foo));
        var method = myType.GetMethod("Throws");
        try
        {
            method.Invoke(new Foo(), null);
        }
        catch (AbortTestException ex)
        {
            Console.WriteLine("AbortTestException");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,奇怪的事情发生了.即使抛出一个AbortTestException,也会使用catch(Exception)块(而不是catch(AbortTestException)块).我尝试在try块本身中添加"throw new AbortTestException("hi")"部分,并验证使用了正确的catch块.

是否有某些原因在通过MethodInfo.invoke()发出时会重新生成异常?

c#

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

在Perl中,如何处理配置文件中的延续行?

所以我试着在配置中读取.Perl中的文件.配置文件使用尾部反斜杠来表示行继续.例如,文件可能如下所示:

  === somefile ===
  foo=bar
  x=this\
  is\
  a\
  multiline statement.
Run Code Online (Sandbox Code Playgroud)

我有读取文件的代码,然后处理尾随反斜杠以连接行.但是,看起来Perl已经为我做了.例如,代码:

  open(fh, 'somefile');
  @data = <fh>;
  print join('', @data);
Run Code Online (Sandbox Code Playgroud)

打印:

  foo=bar
  x=thisisamultiline statement
Run Code Online (Sandbox Code Playgroud)

瞧,'@ dat =;' 声明似乎已经处理了反斜杠!

这是Perl中定义的行为吗?

perl configuration

0
推荐指数
2
解决办法
2060
查看次数