小编Ste*_*ven的帖子

在.NET中的GC期间安全地暂停线程

.NET中的线程在GC期间暂停.如何通过CLR安全地暂停线程?像Win32 SuspendThread API一样以残酷方式停止线程会有什么风险?

.net garbage-collection

9
推荐指数
2
解决办法
1834
查看次数

Autofac:使用in和out类型参数解析变体类型

这个问题是我之前提出的问题的后续问题:Autofac:隐藏一个复合背后的多个逆变实现.

我试图找到我们可以用Autofac的协方差和逆变支持做些什么的边界.我注意到Autofac ContravariantRegistrationSource只支持带有用in关键字标记的单个通用参数的通用接口.这似乎限制了这个功能的实用性,我想知道Autofac是否有其他方法来扩展协方差和逆变的支持.

我必须承认,由于我正在使用的是真正的应用程序设计,所以我不会问这个问题.为了教育,我故意试图找到Autofac的限制.

请考虑以下界面:

public interface IConverter<in TIn, out TOut>
{
    TOut Convert(TIn value);
}
Run Code Online (Sandbox Code Playgroud)

以下实施:

public class ObjectToStringConverter : IConverter<object, string>
{
    string IConverter<object, string>.Convert(object value)
    {
        return value.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下注册:

var builder = new ContainerBuilder();

builder.RegisterSource(new ContravariantRegistrationSource());

builder.RegisterType<ObjectToStringConverter>()
    .As<IConverter<object, string>>();

var container = builder.Build();
Run Code Online (Sandbox Code Playgroud)

通过这种设计和配置,我希望能够做到这一点:

// This call succeeds because IConverter<object, string> is
// explicitly registered.
container.Resolve<IConverter<object, string>>();

// This call fails, although IConverter<string, object> is
// assignable from IConverter<object, string>. …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection ioc-container covariance autofac

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

可在Unity3D中运行的轻量级IoC容器

有人可以建议我在Unity3D中运行一个好的,轻巧的c#IoC容器,而不依赖于服务定位器模式吗?谢谢!

dependency-injection ioc-container unity-game-engine

9
推荐指数
2
解决办法
4052
查看次数

9
推荐指数
2
解决办法
7643
查看次数

WCF和ASP.NET Web API:两者的好处?

我即将开始一个项目,我们有一个后端服务来进行冗长的处理,以便我们的ASP.NET网站可以自由地做更快的请求.因此,我一直在阅读WCF和Web API等服务,以了解他们的工作.由于这种后端服务实际上将由几个彼此通信的服务组成,并且不会公开给我们的客户,因此WCF似乎是这种情况的理想技术.

但经过大量的研究后,我仍然对WCF和Web API之间的好处和差异感到困惑.一般来说,似乎:

  • 如果您需要公共和/或RESTful API,那么Web API是最好的
  • WCF可以支持比HTTP更多的传输,因此您可以对它们进行更多的控制
  • 由于WCF的附加功能/复杂性,Web API开发似乎比WCF更容易

但也许我的问题归结为以下几点:

  1. 为什么REST服务会更有益?一个完整的WCF服务是否会成为公共API的好主意?或者,Web API无法提供WCF服务可以提供的任何内容吗?
  2. 相反,如果我有许多内部服务需要相互通信并且乐于使用HTTP作为传输,那么Web API是否会突然成为可行的选择?

.net asp.net rest wcf asp.net-web-api

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

如何解决"'UnityEngine.Random'不包含'Next'的定义......"错误?

我正在写一个统一的游戏,我想创建一个随机整数...我使用以下内容:

public Random ran = new Random();
public int power = ran.Next(0, 10);
Run Code Online (Sandbox Code Playgroud)

但是当我想运行程序时它会给我以下错误:

类型'UnityEngine.Random'不包含'Next'的定义,也没有找到'UnityEngine.Random'类型的扩展方法'Next'(你是否缺少using指令或汇编引用?)

有什么人帮我解决了什么问题???

c# random unity-game-engine

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

如何用外国字符做MD5?

所以我在移动游戏中使用统一引擎制作我的自定义高分榜.

我设置了我的mysql数据库,并从商店购买了高分资产,它可以工作,但只有英文用户名.所以基本上它发送用户的名字,得分为.php脚本.

但我希望该脚本也可以接收韩国字符作为用户的昵称.我的用户也将使用韩语字符作为昵称,而不仅仅是英文字符.

我怎样才能做到这一点?

这是代码.

------------------(统一方面的Highscore.cs)

WWWForm rsFm = new WWWForm();
            rsFm.AddField("name",name);   
        // at here name field, I want to receive korean characters as well.
            rsFm.AddField("tables",tables);
            rsFm.AddField("hash",GetHash(name));
            WWW rs = new WWW(registerUserURL,rsFm);
            yield return rs;
Run Code Online (Sandbox Code Playgroud)

..................

string GetHash(string usedString){ //Create a Hash to send to server
    MD5 md5 = MD5.Create();
    byte[] bytes = Encoding.ASCII.GetBytes(usedString+secretKey);
    byte[] hash = md5.ComputeHash(bytes);

    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < hash.Length; i++){
        sb.Append(hash[i].ToString("x2"));
    }
    return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

}

RegisterUser.php

<?php
include('ServerConnect.php');
$connection …
Run Code Online (Sandbox Code Playgroud)

php mysql md5 unity-game-engine

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

在单元测试中使用DI容器

我们一直在使用Simple Injector取得了很好的成功,在一个相当实际的应用程序中.我们一直在为所有生产类使用构造函数注入,并配置Simple Injector来填充所有内容,而且一切都很好.

但是,我们没有使用Simple Injector来管理单元测试的依赖树.相反,我们一直在手动创新.

我花了几天时间完成了一次重大的重构,几乎所有的时间都是在我们的单元测试中修复这些手动构造的依赖树.

这让我感到疑惑 - 是否有人使用任何模式来配置他们在单元测试中使用的依赖树?对我们来说,至少在我们的测试中,我们的依赖树往往相当简单,但有很多.

任何人都有他们用来管理这些的方法吗?

c# unit-testing dependency-injection ioc-container simple-injector

9
推荐指数
2
解决办法
7376
查看次数

autofac解析所有类型的开放泛型类型?

我猜测没有办法像Autofac那样做以下内容,为ctor注入一个可枚举的开放泛型类型集合?各种Handle类型都有依赖关系,否则我只是动态构建它们.

    class EventOne : IEvent {...}
    class EventTwo : IEvent {...}
    class EventThree : IEvent {...}
    interface IHandleEvent<T> where T : IEvent {...}
    class HandleEventOne : IHandleEvent<EventOne> {...}
    class HandleEventTwo : IHandleEvent<EventTwo> {...}
    class HandleEventThree : IHandleEvent<EventThree> {...}

    builder.RegisterAssemblyTypes(myAssembies).AsClosedTypesOf(typeof(IHandleEvent<>));
    builder.RegisterType<AService>().As<IAService>();


    class AService : IAService
    {
      public AService(IEnumerable<IHandleEvent<IEvent>> handles)
      {...}
    }
Run Code Online (Sandbox Code Playgroud)

c# autofac

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

在ASP.Net Core中在运行时安装新的中间件

当我的应用程序启动时,我有一堆模块(module1,module2 ......).对于每个模块,我都有一堆控制器操作:

/myModuleController/module1/action1
/myModuleController/module1/action2
/myModuleController/module2/action1
/myModuleController/module2/action2
…
Run Code Online (Sandbox Code Playgroud)

由于用户可以为每个模块记录一次,我为每个模块部署一个身份验证中间件,这样就可以这样做:

app.UseWhen((context) => context.Request.Path.StartsWithSegments(urlPath), appbuilder =>
    {
        appbuilder.UseCookieAuthentication(new CookieAuthenticationOptions()
        {
            CookieName = cookieName,
            …
        });
    });
Run Code Online (Sandbox Code Playgroud)

所以基本上,在url路径上/myModuleController/module1我有一个中间件加上它的cookie,另一个用于/myModuleController/module2...它有点不寻常我想但它工作正常,我对这种行为很满意.

问题出在这里:我希望能够在运行时添加一个新模块,这意味着能够使用一段代码部署一个新的中间件app.UseWhen(url, app. UseCookieAuthentication(…)).我试着天真地注入IApplicationBuilder app负责添加模块的控制器,但我得到一个例外:

System.InvalidOperationException:尝试激活'AdminController'时无法解析类型'Microsoft.AspNetCore.Builder.IApplicationBuilder'的服务

我的问题是:它应该有效吗?我一定是在某个地方弄错了?或者,你是否清楚我在这里尝试的东西没有机会工作?

你怎么会达到同样的要求?谢谢.

c# authentication dependency-injection asp.net-core

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