小编kub*_*003的帖子

Windows服务 - 如何使名称可配置

我用C#写了一个windows服务.一开始的要求是我应该只运行该服务的一个实例,但是已经改变了,现在我需要多个实例.这就是我需要根据配置文件更改服务名称的原因.

使用正确的名称注册的最佳方法是什么?我应该写另一个工具来做吗?我可以从App.config文件中读取名称并在服务和安装程序类中相应地设置它吗?

PS>我真的不明白名称是如何工作的 - 应该在服务和安装程序类中设置名称,但是当使用installutil.exe甚至PowerShell new-service进行安装时,也应该指定名称.那必须是一样的吗?或者一个覆盖另一个?

c# windows-services

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

ASP.NET MVC 3和Razor的ASHX处理程序

我想在ASP.NET MVC 3中使用Silverlight Multi File Uploader.问题是我需要使用ashx处理程序来处理文件上传(处理程序是库的一部分).如何将处理程序与ASP.NET MVC 3集成(我正在使用Razor视图引擎)?

ashx asp.net-mvc-3

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

通用消息处理程序

我想创建一个通用机制来处理C#中的消息.我在我的小应用程序中需要这个,所以我不想使用完整的消息总线.我的要求很简单:

  • 我想有几个类的消息,即Message1,Message2.他们可以从一个基类继承,这不是问题,但如果不是,我不在乎.目前他们确实继承了Message.
  • 能够为每个消息类获取处理程序.即如果我发送Message1,那么Message1Handler应该实例化类.处理程序必须实现IMessageHandler<T>,其中T是消息类.IMessageHandler定义如下:

    interface IMessageHandler<T>
    {
        void Execute(T message);
    }
    
    Run Code Online (Sandbox Code Playgroud)

我写了一个简单的"解析器"类:

public static class HandlerRegistry
{
    private static readonly Dictionary<string, Type> _handlers = new Dictionary<string, Type>(); 


    public static void Register<T, T2>() where T2: IMessageHandler<T>
    {
        _handlers.Add(typeof(T).FullName, typeof(T2));

    }

    public static IMessageHandler<T> Resolve<T>(T parameters)
    {
        var type = _handlers[parameters.GetType().FullName];
        return (IMessageHandler<T>) Activator.CreateInstance(type);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个实现中,一切都很好,但是一部分 - 转换为IMessageHandler.当我试图将它与消息集合一起使用时,会发生这样的情况:编译器在编译时不知道集合中将会有什么实际消息 - 它只是假设它们都是子类Message,所以它是试图投射IMessageHandler<ConcreteMessage>IMessageHandler<Message>显然我得到一个无效演员的异常.在这种情况下,可能的逆变会有所帮助,但我无法将参数声明为out,因为我在Execute方法参数中有消息. …

c# generics

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

WPF绑定默认模式

在我的一个应用程序中,我有一个这样的代码:

<ProgressBar Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Height="27" Margin="5,0,5,0" Maximum="{Binding TabuProgressEnd}" Value="{Binding TabuProgress}" />
Run Code Online (Sandbox Code Playgroud)

虽然我在测试这一切都没问题,但是当我的客户端在VS下打开它并运行此代码时抛出异常:

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll

Additional information: A TwoWay or OneWayToSource binding cannot work on the read-only property 'TabuProgress' of type 'TSPLib.TabuEngine'.
Run Code Online (Sandbox Code Playgroud)

通常我会认为这是某种骗局,但我知道这个家伙不知道编码并使"Mode = OneWay"明确有帮助.不同机器上的默认绑定模式有何不同?

wpf binding

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

C#隐式运算符和ToString()

我正在创建自己的类型来表示css值(例如像素,例如12px).为了能够添加/减去/乘以/ ...我的类型和整数我已经在int中定义了两个隐式运算符.一切都很好,除了一件事..如果我写:

CssUnitBase c1 = 10;
Console.WriteLine(c1);
Run Code Online (Sandbox Code Playgroud)

我得到"10"而不是"10px" - 使用隐式转换为int而不是ToString()方法.我怎么能防止这种情况?

c# operator-overloading implicit-cast

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

SQL Server使用C#执行备份

我已经研究了使用C#通过SMO创建数据库备份的可能性.任务非常简单,代码简单明了.我只有一个问题:如何检查备份是否真的被创建了?

SqlBackup.SqlBackup方法返回没有参数,我甚至不知道它是否抛出任何异常.(我唯一知道的是它是阻塞的,因为还有SqlBackupAsync方法)

我将不胜感激任何帮助.

c# backup sql-server-2008

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

C#事件和类方法

我想知道我是否做了这样的事情:

class A
{
    public MethodA()
    {
    }
    public MethodB()
    {
        ExternalObject.Click += this.MethodA;
    }
    public MethodC()
    {
        ExternalObject.Click -= this.MethodA;
    }
}

A a = new A();
a.MethodB();
a.MethodC();
Run Code Online (Sandbox Code Playgroud)

这会起作用吗?通过"工作"我的意思是 - MethodA是否会取消订阅ExternalObject.Click事件?

以及其他相关问题:

当使用实例方法而不是委托实例时,幕后会发生什么?(如上)

这会导致隐式创建委托吗?

-=操作员如何在代表之间进行比较 - 通过引用或者更复杂的事情发生?

c# delegates

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

SQL Server查询 - 为什么我会遇到死锁?

我有以下代码:

set transaction isolation level read committed; --this is for clarity only

DECLARE @jobName nvarchar(128);

BEGIN TRAN
    SELECT @jobName = JobName
    FROM dbo.JobDetails
    WHERE ExecutionState_Status = 1

    WAITFOR DELAY '00:00:10'

    UPDATE dbo.JobDetails
    SET ExecutionState_Status = 10
    WHERE JobName = @jobName

COMMIT 
Run Code Online (Sandbox Code Playgroud)

第二件几乎是相同的:

set transaction isolation level read committed;

DECLARE @jobName nvarchar(128);

BEGIN TRAN
    SELECT @jobName = JobName
    FROM dbo.JobDetails
    WHERE ExecutionState_Status = 1

    WAITFOR DELAY '00:00:15'

    UPDATE dbo.JobDetails
    SET ExecutionState_Status = 20
    WHERE JobName = @jobName

COMMIT 
Run Code Online (Sandbox Code Playgroud)

不同之处在于我们设定的状态(10对20)和延迟(10对15对).

我在Management Studio中并行执行它们 …

sql sql-server transaction-isolation

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

ASP.NET MVC.Autofac和多个连接字符串

我需要在ASP.NET MVC应用程序中使用多个连接字符串.我怎么能这样做?现在我正在注册连接如下:

builder.RegisterType<SqlConnection>().WithParameter(
    "connectionString",
    WebConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString)
  .InstancePerLifetimeScope()
  .ExternallyOwned();

builder.Register(c => new ContextDataContext(c.Resolve<SqlConnection>())).InstancePerDependency();
Run Code Online (Sandbox Code Playgroud)

c# autofac

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

Angular 4 - 如何访问模板中的嵌套组件?

我有一个组件层次结构:

App
|
Child
|
Input
Run Code Online (Sandbox Code Playgroud)

组件"Child"接受来自其父级的模板,如下所示:

<my-child>
    <ng-template>
        <my-input></my-input>
        <span>asdasdas</span>
        <my-input></my-input>
        <my-input></my-input>
    </ng-template>    
</my-child>   
Run Code Online (Sandbox Code Playgroud)

正如您在模板中看到的那样,有许多输入组件.现在我想访问<my-input>子组件中的组件列表.我现在尝试的是使用@ ContentChildren/@ ViewChildren,但它似乎不起作用.子组件的代码:

@Component({
  selector: 'my-child',
  providers: [],
  template: `
    <div>
      <ng-template [ngTemplateOutlet]="inputTemplate" #input></ng-template>
    </div>
  `,
  directives: []
})

export class Child implements OnInit, OnAfterViewInit {

  @ContentChild(TemplateRef) inputTemplate: TemplateRef<any>;

  @ViewChildren(InputComponent) inputComponents : QueryList<InputComponent>;

  constructor() {

  }

  ngAfterViewInit(){
    //THIS SHOULD NOT BE EMPTY
    console.log(this.inputComponents.toArray());
  }
}
Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么,以及如何从Child组件中获取InputComponents列表.

也许我不应该在这里使用模板?有没有其他方法可以自定义此控件,仍然可以访问嵌套的InputComponents列表?

如果你想玩它,这里是plunker

angular

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