问题列表 - 第15168页

.NET:无法将对象转换为它实现的接口

我有一个类(TabControlH60),它继承自基类(UserControl)并实现一个接口(IFrameworkClient).我使用.NET Activator类实例化对象.使用返回的实例,我可以转换为UserControl基类,但不能转换为接口.我得到的例外是在代码snipet下面.如何转换为界面?

object obj = Activator.CreateInstance(objType);
Type[] interfaces = obj.GetType().GetInterfaces(); // contains IFrameworkClient

m_Client = (UserControl)obj;                 // base class cast works
IFrameworkClient fc = (IFrameworkClient)obj; // interface cast fails

// Note: The (IFrameworkClient)obj cast works fine in the debugger Watch window.
{"Unable to cast object of type 'FPG.H60.AFF.TabControlH60' to type 
    'FPG.AFF.Interfaces.IFrameworkClient'."}
Run Code Online (Sandbox Code Playgroud)

c# casting interface base-class activator

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

如何在Windows上进行非阻塞IPC读取?

我有一个Perl脚本,它使用外部工具(cleartool)来收集有关文件列表的信息.我想使用IPC来避免为每个文件生成一个新进程:

use IPC::Open2;
my ($cin, $cout);
my $child = open2($cout, $cin, 'cleartool');
Run Code Online (Sandbox Code Playgroud)

返回单行的命令运行良好.例如

print $cin "describe -short $file\n";
my $description = <$cout>;
Run Code Online (Sandbox Code Playgroud)

返回多行的命令使我处于死胡同,以便如何使用整个响应而不会被阻塞读取挂起:

print $cin "lshistory $file\n";
# read and process $cout...
Run Code Online (Sandbox Code Playgroud)

我试图通过fcntl以下方式为非阻塞读取设置文件句柄:

use Fcntl;
my $flags = '';
fcntl($cout, F_GETFL, $flags);
$flags |= O_NONBLOCK;
fcntl($cout, F_SETFL, $flags);
Run Code Online (Sandbox Code Playgroud)

但是Fcntl的消息是"你的供应商还没有定义Fcntl宏F_GETFL".

我已经尝试使用IO :: Handle进行设置$cout->blocking(0)但失败了(它返回undef并设置$!为"Unknown error").

select在尝试阅读之前,我曾试图确定是否有可用的数据:

my $rfd = '';
vec($rfd, fileno($cout), 1) = 1;
while (select($rfd, undef, undef, 0) >= 0) { …
Run Code Online (Sandbox Code Playgroud)

windows perl ipc

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

Git子模块工作流程

在我的项目中,我需要使用第三方代码,存储在几个Git存储库中.我的项目也存储在(单独的)Git存储库中.在主项目中有几个人和我一起工作,我是维护者.

在早期的项目中,我曾经手动将依赖项复制到Git工作树,添加一个指定我使用的版本的小文件.

现在这是相当不舒服的,因为我需要每天更新一个依赖项,并且经常自己贡献代码,大部分时间都伴随着对主项目的更改.

我决定尝试使用Git子模块进行管理.我尝试的越多,我就越沮丧.甚至看起来手动副本也许更好.

以下是我的一些担忧:

  • 我们不再能够通过单个命令获得一致的存储库状态(git checkout现在需要git submodule update --init).
  • 我们无法正确使用某些Git工具(git archive最值得注意的是).
  • 我们无法从主项目中看到状态更改/差异到子模块.
  • 正如我刚刚发现的那样,git submodule无法使用--git-dir--work-tree选项,并且需要将当前目录的物理更改为"工作树的顶层".

似乎为了简化我们的子模块工作流程(即一个操作==一个命令),我们必须在Git周围编写一个相当厚的包装器.这真是难过;这真是伤心.

请注意,不能选择远离Git或将子项目开发完全合并到主项目中.

也许我用git submodules的是错误的方式?有没有关于工作流程的好教程?

即使您不知道正确的答案,请大家说出来,但请分享我的疑虑.:-)

git workflow git-submodules

42
推荐指数
2
解决办法
6081
查看次数

使用Python和minidom进行XML解析

我正在使用Python(minidom)来解析XML文件,该文件打印出类似于此的层次结构(此处使用缩进来显示重要的层次关系):

My Document
Overview
    Basic Features
    About This Software
        Platforms Supported
Run Code Online (Sandbox Code Playgroud)

相反,程序在节点上多次迭代并生成以下内容,打印重复节点.(在每次迭代时查看节点列表,很明显为什么它会这样做但我似乎无法找到获取我正在寻找的节点列表的方法.)

My Document
Overview
Basic Features
About This Software
Platforms Supported
Basic Features
About This Software
Platforms Supported
Platforms Supported
Run Code Online (Sandbox Code Playgroud)

这是XML源文件:

<?xml version="1.0" encoding="UTF-8"?>
<DOCMAP>
    <Topic Target="ALL">
        <Title>My Document</Title>
    </Topic>
    <Topic Target="ALL">
        <Title>Overview</Title>
        <Topic Target="ALL">
            <Title>Basic Features</Title>
        </Topic>
        <Topic Target="ALL">
            <Title>About This Software</Title>
            <Topic Target="ALL">
                <Title>Platforms Supported</Title>
            </Topic>
        </Topic>
    </Topic>
</DOCMAP>
Run Code Online (Sandbox Code Playgroud)

这是Python程序:

import xml.dom.minidom
from xml.dom.minidom import Node

dom = xml.dom.minidom.parse("test.xml")
Topic=dom.getElementsByTagName('Topic')
i = 0
for node in Topic: …
Run Code Online (Sandbox Code Playgroud)

python xml minidom

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

C#接口与类访问

当类实现接口时,通过类本身或通过其接口访问属性和方法是否更好?

c# interface

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

当Firebug运行时,jQuery在Firefox中运行,当Firebug未运行时不起作用

我为我的页面加载了以下Javascript库.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js"></script>
<script type="text/javascript" src="./js/jquery.scrollTo-min.js"></script>
Run Code Online (Sandbox Code Playgroud)

我有div元素,我想把它们放在:

<div class="content" id="content">
</div>
Run Code Online (Sandbox Code Playgroud)

我有这个链接:

<a id="changeText" href="rules.html">Click to change</a>
Run Code Online (Sandbox Code Playgroud)

最后,我有以下jQuery代码:

<script>

$(document).ready(function() {
 $("#changeText").click(function(){

  var url = $(this).attr("href");

  $("#content").load(url);

  console.log(url);

  $.scrollTo("0%", 400);
 });
});
</script>
Run Code Online (Sandbox Code Playgroud)

这一切都适用于Safari.这个故事中最奇怪的部分是它只能在Firebug启动时在Firefox中运行.当Firebug未启用时,页面似乎是动态加载的,但页面加载rules.html并切换到它,这不是我想要的目标.

当然,这也不适用于IE8.

我究竟做错了什么?

javascript firefox jquery firebug

17
推荐指数
2
解决办法
5006
查看次数

我可以在C++中创建一个匿名的,大括号初始化的聚合吗?

可以创建一个通过构造函数参数初始化的匿名对象,例如在下面的return语句中.

struct S {
  S(int i_, int j_) : i(i_), j(j_) { }
  int i, j;
};

S f()
{
  return S(52, 100);
}

int main()
{
  cout << f().i << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,是否可以类似地创建一个使用大括号初始化程序初始化的匿名聚合?例如,可以将f()的主体折叠到下面,直到单个return语句而没有"s"吗?

struct S {
  int i, j;
};

S f()
{
  S s = { 52, 100 };
  return s;
}

int main()
{
  cout << f().i << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ aggregate initializer

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

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

收益率的工作模式

当我有一个代码块

static void Main()
{

  foreach (int i in YieldDemo.SupplyIntegers())
  {
    Console.WriteLine("{0} is consumed by foreach iteration", i);
  }
}


 class YieldDemo
  {
    public static IEnumerable<int> SupplyIntegers()
     {
         yield return 1;
         yield return 2;
          yield return 3;
       }
   }
Run Code Online (Sandbox Code Playgroud)

我可以将收益率收益背后的原理解释为

  1. Main()调用SupplyIntegers()
  2. |1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
  3. 控制从SupplyInteger()返回到Main().
  4. Main()打印该值
  5. 指针移动到| 2 |,依此类推.

澄清:

(1)通常我们将在函数内部允许一个有效的return语句.当多个yield return,yield return,...语句出现时C#如何处理?

(2)一旦遇到回报,就无法再次控制回到SupplyIntegers(),如果允许则不会再从1开始收益?我的意思是收益率1?

c# enumeration

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

如何在Word中将Word文档转换为非常简单的html?

我不时地收到一个Word文档,我必须将其显示为网页.我目前正在使用Django的flatpages通过抓取MS Word生成的html内容来实现这一点.生成的HTML非常混乱.有没有更好的方法可以使用Python生成非常简单的html来解决这个问题?

html python django ms-word

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