小编Jus*_*ony的帖子

如何在没有接口的情况下绑定COM事件

我需要延迟绑定到3.5 C#应用程序中的第三方VB6 COM对象(以避免我们当前拥有的版本依赖项).由于某些错误在我们尝试正常使用时导致错误,因此提供的dll在大多数非后期方式中都不可使用.目前,我们正在使用一个自定义的VB6包装器,它使得VERY特定于版本,但是我发现我可以使用后期绑定来访问属性和方法.现在,我试图延迟绑定到事件,但是我读到的所有内容都说我需要从COM包装器的接口继承来创建所需的事件接收器.这是一篇这样的文章.

所以,我的问题是,是否有可能在编译时没有引用dll的情况下执行后期绑定事件处理?

UPDATE

以下是我对VB6包装器的错误(仍在积极更新).

  • 在OleViewer中,我得到了

无法反编译所选项目错误加载类型库/ DLL.TYPE_E_CANTLOADLIBRARY($ 80029C4A)

  • 在Visual Studio中,我得到:

无法确定COM引用"3rdPartyDLL"的依赖项.加载类型库/ DLL时出错.(来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY))

c# vb6 late-binding .net-3.5 oleview

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

TemplateBinding不适用于文本框文本

我有一个自定义控件EnhancedTextBox,它是一个具有a TextBox和a 的UserControl Button.对于消费者我希望它看起来大部分看起来像TextBox,所以我做了以下事情:

<UserControl.Template>
    <ControlTemplate TargetType="textBoxes:EnhancedTextBox">
    ...
    <TextBox Text="{TemplateBinding Text}"...
Run Code Online (Sandbox Code Playgroud)

在EnhancedTextBox我有

public static readonly DependencyProperty TextProperty =
  DependencyProperty.Register("Text", typeof (String), typeof (EnhancedTextBox));

public String Text
{
  get { return (String) GetValue(TextProperty); }
  set { SetValue(TextProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我使用它时如下:

<EnhancedTextBox Text="{Binding MyText, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}}" />
Run Code Online (Sandbox Code Playgroud)

然后,MyText永远不会更新,我检查EnhancedTextBox.Text,它是null.我错过了什么?我一直盯着这一点,无法弄清楚出了什么问题.我甚至认为可能是因为我使用的是同一个名字,所以创建一个叫做Text1无效的属性....

另外值得注意的是,如果我使用常规TextBox,那么这一切都有效.所以,我相当肯定问题在于EnhancedTextBox它自身

.net c# wpf dependency-properties templatebinding

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

Swift中忽略参数的用例是什么?

在Swift中,您可以编写以下内容:

func foo(_:Int) -> { return 1 }
Run Code Online (Sandbox Code Playgroud)

下划线是一个被忽略的参数.我只是因为文档而知道这一点,但是不能想到为什么你甚至会这样做的任何用例.我错过了什么吗?

parameters ignore swift

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

使用 nginx 重定向到 docker 注册表

我想要做的就是控制顶部端点(用户将在其中登录和拉取图像的 MY_ENDPOINT。正在托管注册表和容器(DOCKER_SAAS),所以我需要的只是一个看似简单的重定向。具体来说,您通常会这样做:

docker login -u ... -p ... DOCKER_SAAS
docker pull DOCKER_SAAS/.../...
Run Code Online (Sandbox Code Playgroud)

我想允许:

docker login -u ... -p ... MY_ENDPOINT
docker pull MY_ENDPOINT/.../...
Run Code Online (Sandbox Code Playgroud)

甚至更理想的是,我更喜欢:

docker login MY_ENDPOINT
docker pull MY_ENDPOINT/.../...
Run Code Online (Sandbox Code Playgroud)

最后一项的不同之处在于端点包含用户名和密码的散列版本,它被设置到一个Authorization标题中(使用Basic) - 所以用户甚至不需要担心用户名和密码,只需担心他们的 URL。我已经尝试了一个,proxy_pass因为我们已经在为基本打包(使用 HTTPS)做了,但是失败了 404(部分是因为我们不处理 /v2 - 我还需要重定向它吗?)。这让我找到了https://docs.docker.com/registry/recipes/nginx/,但这似乎只有在您托管注册表时才有意义。我正在尝试做的甚至可能吗?

reverse-proxy nginx docker nginx-reverse-proxy

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

找不到服务端点?

在尝试从我的服务中获取时,似乎遇到了未找到服务端点的问题.

如果我尝试http:// localhost:8000/hello/help我应该看到,<string>You entered help <string>但我只得到无端点?我根本没有触及我的配置文件,我只是从一个控制台应用程序托管.

主办:

namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            WebHttpBinding binding = new WebHttpBinding();
            WebServiceHost host =
            new WebServiceHost(typeof(Service1));
            host.AddServiceEndpoint(typeof(IService1),
            binding,
            "http://localhost:8000/hello");
            host.Open();
            Console.WriteLine("Hello world service");
            Console.WriteLine("Press <RETURN> to end service");
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

服务1:

namespace WcfServiceLibrary1
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.
    public class Service1 …
Run Code Online (Sandbox Code Playgroud)

.net c# rest wcf

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

MSSQL - 将自1970年以来的毫秒转换为datetime2

请考虑以下查询(在MSSQL 2008中):

SELECT dateModified FROM SomeTable;
Run Code Online (Sandbox Code Playgroud)

这将以javascript格式返回浮点数(自1970年以来的毫秒数):

dateModified 
============ 
1301598290687 
1071003581343 
1311951478593
Run Code Online (Sandbox Code Playgroud)

如何在选择中将其转换为datetime2?

sql datetime sql-server-2008

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

当方法调用后定义隐式val时,Scala隐式参数为null

考虑:

object implicitnull extends App {
  mymethod

  implicit val arg = "foo"

  def mymethod(implicit arg: String) = {
    arg.size
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不会导致任何编译错误,而是在运行时导致NullPointerException来自arg.size.

这是预期的行为吗?

scala implicit

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

Scala:将参数名称和类型存储在哈希映射中

我对scala比较新.我试图在哈希映射中维护一个包含属性列表及其类型的哈希映射.我试过这样的事

val attribTemplate = new mutable.LinkedHashMap[String, Class]

attribTemplate("attr1") = classOf[Int]

attribTemplate("attr2") = classOf[String]
Run Code Online (Sandbox Code Playgroud)

斯卡拉不喜欢它.我想稍后对这种类型的信息进行模式匹配我该如何实现?谢谢

types scala

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

在 asInstanceOf 中引用嵌套类

我正进入(状态 not found: value Duck

    class Type
    class Value(val t: Type)
    class Duck extends Type {
        class Val extends Value(this)
    }
    def f(individual: Value) = individual.t match {
        // case t: Duck => individual.asInstanceOf[Value] //this is ok
         case t: Duck => individual.asInstanceOf[Duck.Val] //but I need this
    }
Run Code Online (Sandbox Code Playgroud)

在这里添加一些细节以提高问题质量。正式的质量检查不会出错。如果更多的字母改善了你的问题,那就一定是这种情况。现在,我的问题好多了,可以发布了。

casting scala nested-class inner-classes

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

无法将表达式转换为返回类型

我有以下方法:

public Option<IAppSettings> GetFirst<T>() where T : IAppSettings
{
  return _sources.Where(x=>x.GetType() == typeof(T)).FirstOption();
}

List<IAppSettings> _sources;
Run Code Online (Sandbox Code Playgroud)

但是,我想将签名更改为:

public Option<T> GetFirst<T>() where T : IAppSettings
Run Code Online (Sandbox Code Playgroud)

请注意,我将返回通用T而不是IAppSettings

我收到错误(截断类型):

无法将表达式转换Option<IAppSettings>Option<T>

我知道这事做泛型,但不可否认他们吮吸....我试过的不同手段in,out,interface,delegate...但没有工作,因为这是用一个实例上的非通用类的方法变量.

这甚至可能吗?

更新了想法

我是否需要更改类型规格Option?如果是这样,我猜它一定是Option<in T>吗?我之所以这么说只是因为Scala的Option输入是因为Option[+A]我有源Option,但改变并推高是一种痛苦......所以我想先问这里,但会尝试下一步

Option来自我的鳞片叉

c# generics variance

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