小编gap*_*gap的帖子

我可以使用带有NameValueCollection的集合初始值设定项吗?

有没有办法使用C#集合初始化器语法初始化NVC:

NameValueCollection nvc = new NameValueCollection() { ("a", "1"), ("b", "2") };
Run Code Online (Sandbox Code Playgroud)

谢谢

c# collections

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

如何跨AppDomain边界传递CancellationToken?

我有一个命令对象,根据请求队列的请求进行工作.此特定命令将在子appdomain中执行其工作.在子appdomain中完成其工作的一部分涉及阻止ConcurrentQueue操作(例如,Add或Take).我需要能够通过请求队列传播中止信号,传递到子appdomain,并唤醒其中的工作线程.

因此,我认为我需要在AppDomain边界传递CancellationToken.

我尝试创建一个继承自MarshalByRefObject的类:

protected class InterAppDomainAbort : MarshalByRefObject, IAbortControl
    {
        public InterAppDomainAbort(CancellationToken t)
        {
            Token = t;
        }

        [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
        public override object InitializeLifetimeService()
        {
            return null;
        }

        public CancellationToken Token
        {
            get;
            private set;
        }

    };
Run Code Online (Sandbox Code Playgroud)

并将此作为参数传递给worker函数:

// cts is an instance variable which can be triggered by another thread in parent appdomain
cts = new CancellationTokenSource();
InterAppDomainAbort abortFlag = new InterAppDomainAbort(cts.Token);
objectInRemoteAppDomain = childDomain.CreateInstanceAndUnwrap(...);

// this call will block for a long while the work is …
Run Code Online (Sandbox Code Playgroud)

.net c# concurrency appdomain abort

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

有没有办法创建支持接口的DynamicObject?

我可以定义一个派生自DynamicObject并支持接口(ICanDoManyThings)的类,而无需在接口中实现每个方法吗?

我正在尝试创建一个动态代理对象,并希望通过MyProxyClass.TryInvokeMember的实现来处理此类上的方法调用,这可能会也可能不会将它们传递给包装对象.

这可能吗?

谢谢

c# dynamic-proxy dynamicobject c#-4.0

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

我应该在下一次Web应用程序开发中使用WPF或ASP.NET吗?

我们有一个使用MySQL/PHP/Javascript + JQuery构建的Web应用程序,带有服务器端HTML生成.问题在于为公司工作的10个软件开发人员中,没有一个是PHP专家(我们都是.NET/C#开发人员).我需要向我的管理团队推荐使用哪些技术作为下一代Web应用程序产品的平台.

我想利用公司拥有和正在构建的.NET/C#专业知识,因此我倾向于推荐一些Microsoft技术.我们不需要客户端插件,我们不需要华丽的动画/多媒体,所以我排除了Silverlight.

WPF准备好迎接黄金时段吗?ASP.NET弃用了WPF吗?我如何在这两种技术之间做出选择?

大问题,我知道......如有必要,我可以根据您的意见对其进行改进.

感谢您抽出宝贵的时间.

.net architecture asp.net wpf

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

BadImageFormatException 0x80131124(未找到索引)是什么意思?

我的程序偶尔会崩溃并出现以下错误消息:

System.Reflection.TargetInitationException:调用目标已引发异常。---> System.BadImageFormatException:找不到索引。(HRESULT 异常:0x80131124)

一些可能相关的细节:

  • C# 4 / .NET 4
  • Windows 7 64 位操作系统。EXE 适用于任何 CPU(因此它处于 64 位模式)。
  • 这是在构建我的自定义对象之一期间引发的。我在子 AppDomain 中创建此对象,以便可以卸载它将通过服务传入请求来加载的 DLL。
  • 我从http://blogs.msdn.com/b/yizhang/看到HRESULT 0x80131124 = CLDB_E_INDEX_NOTFOUND。
  • 我最近才看到这种情况发生(我已经在这个应用程序上工作了 3 年),即使是现在,它也仅在我尝试使用 Red Gate 性能分析器或 Red Gate 内存分析器分析该工具时才会发生。

我的问题是

  • 这是什么意思 ?
  • 什么是“未找到索引”?
  • 我该如何解决 ?

非常感谢。

更新

我没有将 EXE 定位为 ANY,而是将其强制为 x64。问题仍然出现。

.net badimageformatexception

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

在C#中实现动态代理的最佳方法是什么?

我需要在C#中创建动态代理.我希望这个类包装另一个类,并采用它的公共接口,转发对这些函数的调用:

class MyRootClass
{
    public virtual void Foo()
    {
        Console.Out.WriteLine("Foo!");
    }

}

interface ISecondaryInterface
{
    void Bar();
}

class Wrapper<T> : ISecondaryInterface where T: MyRootClass
{
    public Wrapper(T otherObj)
    {
    }

    public void Bar()
    {
        Console.Out.WriteLine("Bar!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我想要使用它的方式:

Wrapper<MyRootClass> wrappedObj = new Wrapper<MyRootClass>(new MyRootClass());
wrappedObj.Bar();
wrappedObj.Foo();
Run Code Online (Sandbox Code Playgroud)

生产:

Bar!
Foo!
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

最简单的方法是什么?

最好的方法是什么?

非常感谢.

UPDATE

我尝试遵循Wernight的建议并使用C#4.0动态代理实现此功能.不幸的是,我仍然被卡住了.代理的要点是模仿通常(通常是)预期的其他接口.使用DynamicObject要求我将其所有客户端更改为使用"dynamic"而不是"ISecondaryInterface".

有没有办法获取代理对象,这样当它包装A时,它会(静态地)通告它支持A的接口; 当它包装B时,它会宣传支持B的界面?

更新2

例如:

class MySecretProxy : DynamicObject, ISecondaryInterface
{
    public override void TryInvokeMember(...) { .. }

    // no declaration of Bar -- let …
Run Code Online (Sandbox Code Playgroud)

.net c# dynamic-programming dynamic-proxy .net-3.5

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

如何为VS2012 C#Project执行自定义构建步骤?

我们有一个VS2012解决方案,其中包含十几个C#项目.其中一个C#项目使用了一个文本文件,该文件由我们编写的单独的C#工具转换为SQL.我们希望在TXT文件发生更改(发布和调试版本)时,在构建期间自动调用此TXT-2-SQL文件转换.

此外,我们希望Debug构建能够将SQL加载到本地DB中; 即,调用我们现有的批处理文件之一populate_db.bat,将SQL文件名作为参数(这只是包装mysql客户端的调用并导致执行SQL).

最好的方法是什么?

c# msbuild visual-studio-2012

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