小编Blo*_*ard的帖子

哪个DI容器会满足这个要求

这是我想要的DI容器:

public class Class
{
   public Class(IDependency dependency, string data)  { }
}

var obj = di.Resolve<Class>(() => new Class(null, "test"));
Run Code Online (Sandbox Code Playgroud)

兴趣点:

  1. 可以在构造函数中解析依赖项和数据.
  2. 可以使用类型安全语法来传递构造函数参数(确切的语法可能会有所不同).是的,我可以通过从(Expression.Body作为NewExpression)获取构造函数参数来自己完成 - 但我需要一种方法来检测容器中注册的参数.

另一个主要要求是我希望自动拾取我的组件,即我不想注册类 - 我希望IoC能够选择它,因为它知道如何解决IDependency.

此外,Property Injection有时也很有用,但这是可选的.

问题实际上是关于功能的组合 - 拥有所有功能 - 类型安全,参数,自动拾取......很容易检查一个功能,但除非一个人熟悉,否则它们的组合不容易验证特定容器并了解其功能.这样的问题.

c# dependency-injection

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

ROW NUMBER()OVER

我遇到了一个有点特殊的语法,你能帮我找出它的含义吗?谢谢.

SELECT ROW NUMBER() OVER (ORDER BY Product.ProductID) FROM Product;
Run Code Online (Sandbox Code Playgroud)

此外,这失败了.我特别感兴趣ROW NUMBER() OVER.这是我第一次遇到OVER关键字.

如果您需要完整的示例,请告诉我.为了清楚起见,我稍微缩短了一点.

t-sql sql-server

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

自我加入多对多的关系

根据以下样本数据,假设Julie(1)有朋友Adam,David,John(2,3,4).亚当(2)有朋友朱莉,大卫,约翰(1,3,4).

ID  Name
1   Julie
2   Adam
3   David
4   John
5   Sam
Run Code Online (Sandbox Code Playgroud)

这使得一个表中的自连接和多对多关系成为可能.

除了上述问题之外,Julie(1)还说Sam(5)是朋友,从技术上和实际上讲,Sam(5)现在也是Julie(1)的朋友.这使得事情变得更加复杂,因为这种关系是双向的.

所以我想知道:

  1. 我该如何设计数据库?
  2. 如何进行将返回每个用户的所有朋友的查询?

谢谢!

sql sql-server

11
推荐指数
3
解决办法
6898
查看次数

使用ARM CPU的机器上的奇怪python行为

什么可能导致这种奇怪的python行为?

Python 2.6.2 (r262:71600, May 31 2009, 03:55:41)
[GCC 3.3.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> .1
1251938906.2350719
>>> .1
0.23507189750671387
>>> .1
0.0
>>> .1
-1073741823.0
>>> .1
-1073741823.0
>>> .1
-1073741823.0
>>>
Run Code Online (Sandbox Code Playgroud)

它提供了相同的输出0.1,0.5,5.1,0.0,等整数正确地回送了我一眼,但小数点任何东西让我疯狂的数字.

这是为ARM编译的python二进制文件,通过Synware DiskStation 101j上的Optware安装.

以前有人见过这样的事吗?

python floating-point arm

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

Delphi 7中的GetStackTrace?

使用Delphi 7,如何从一个字符串中获取表示堆栈跟踪的字符串Exception

try
  SomethingDodgy();
except
  on E:Exception do begin
    // print stack trace
    Log.Write(/* ??? */);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我听说最新的delphi中有一个GetStackTrace函数,但我找不到delphi 7的任何东西.不,升级不是一个选项:)

delphi exception delphi-7 stack-trace

10
推荐指数
3
解决办法
3981
查看次数

如何以完美的准确度将字符串转换为浮点数?

我正在尝试用D编程语言编写一个函数来替换对C的strtold的调用.(基本原理:要使用来自D的strtold,你必须将D字符串转换为C字符串,这是低效的.另外,strtold不能在编译时执行.)我想出了一个主要有效的实现,但是我似乎在最不重要的位上失去了一些精确度.

算法的有趣部分的代码如下,我可以看到精度损失来自哪里,但我不知道如何摆脱它.(我遗漏了许多与核心算法无关的代码部分,以节省人们的阅读.)什么字符串到浮点算法将保证结果尽可能接近IEEE编号line到字符串表示的值.

real currentPlace = 10.0L ^^ (pointPos - ePos + 1 + expon);

real ans = 0;
for(int index = ePos - 1; index > -1; index--) {
    if(str[index] == '.') {
        continue;
    }

    if(str[index] < '0' || str[index] > '9') {
        err();
    }

    auto digit = cast(int) str[index] - cast(int) '0';
    ans += digit * currentPlace;
    currentPlace *= 10;
}

return ans * sign;
Run Code Online (Sandbox Code Playgroud)

此外,我正在使用旧版本的单元测试,其中包括:

assert(to!(real)("0.456") == 0.456L);
Run Code Online (Sandbox Code Playgroud)

我的函数生成的答案是否有可能比解析浮点文字时编译器生成的表示更准确,但编译器(用C++编写)总是与strtold完全一致,因为它在内部使用strtold进行解析浮点文字?

floating-point d floating-accuracy

10
推荐指数
2
解决办法
4019
查看次数

私有抽象方法有些麻烦

假设我做了一个大班Car- 我希望这个班级是抽象的.摘要因为这是我的主要类,所以没有人应该创建这个类的对象.这个类应该只作为"骨干".

我希望只能从子类中创建类Car(比如梅赛德斯,法拉利......).因为每辆车都应该有像StartEngine我把它放入大班的方法.假设我有这个:

abstract class Car
{
  public string Name { get; set; }

  public abstract void StartEngine();
  private abstract bool CheckGasoline();
  //and so on...
}

class Mercedes : Car
{
  private override bool CheckGasoline()
  {
  //somehow check gasoline and return whatever...
  }

  public override void StartEngine()
  {
    if (CheckGasoline())
      //start engine...
  }
}
Run Code Online (Sandbox Code Playgroud)

好吧,这不会奏效.由于私人摘要:

virtual or abstract members cannot be private
Run Code Online (Sandbox Code Playgroud)

所以生病使每个私人方法都受到保护:

abstract class Car
{
  public string Name { get; set; } …
Run Code Online (Sandbox Code Playgroud)

.net c# abstract-class

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

如何在不按F5的情况下使缓存图像到期?

我正在使用MVC4和C#制作一个Web应用程序.

我允许用户为他们的个人资料图片上传图片.此时,我需要先前的个人资料图片到期,以便当浏览器重新加载页面时,将显示新图像.目前,由于两个图像共享相同的名称,因此浏览器使用先前已缓存的图像而不是新图像.

如果我强制浏览器使用F5重新加载它会显示新图像.如何确保返回其个人资料页面的用户在没有点击F5的情况下看到新图像而不是浏览器缓存中的图像?

html c# asp.net-mvc

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

ViewModels和Service类的实例化

我试图了解ViewModels和Service类的实例化,并将其写入其他人.请在需要的地方更正/添加.

ViewModels和Services的实例化不是以最常见的方式完成的.它是用反射完成的.

在TipCalc中你有:

public class FirstViewModel : MvxViewModel
{
    private readonly ICalculationService _calculationService;

    public FirstViewModel(ICalculationService calculationService)
    {
        _calculationService = calculationService;
    }
...
}
Run Code Online (Sandbox Code Playgroud)

public class App : Cirrious.MvvmCross.ViewModels.MvxApplication
{
    public override void Initialize()
    {
        CreatableTypes()
         .EndingWith("Service")
         .AsInterfaces()
         .RegisterAsLazySingleton();
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在Initialize()期间,设计为Service的接口和类(名称以Service结尾)使用反射以及接口名称和类名称(IPersonService和PersonService)进行配对.这稍后用于反向查找类的实例(查找表包含对服务类的单例实例的延迟引用.服务在null时创建.

public FirstViewModel(ICalculationService calculationService)引用CalculationService的实例.这是通过使用先前创建的查找表来完成的.

ViewModels的实例化是通过Mvx框架完成的.当"询问"MvxFramework实例化的ViewModel时,它将反映ViewModel并确定该类上的构造函数.如果有一个无参数构造函数,那么将使用它.如果存在带参数的构造函数且参数是服务类的接口,则该服务的(单例)实例将用作参数.

服务以类似的方式实例化; 他们的构造函数反映和参数实例化(单例).等等.

xamarin.ios xamarin.android windows-phone mvvmcross windows-store-apps

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

OWIN中间件来关联和记录请求和响应?

我正在编写一个自定义OWIN中间件来记录所有http请求及其响应.我想用trackingId"关联"这些.这是代码:

public class PacketTrackingMiddleware
{
    private readonly AppFunc _next;

    public PacketTrackingMiddleware(AppFunc next)
    {
        _next = next;
    }

    public async Task Invoke(IDictionary<string, object> environment)
    {
        IOwinContext context = new OwinContext(environment);            
        var request = context.Request;
        var response = context.Response;

        //capture details about the caller identity

        var identity = (request.User != null && request.User.Identity.IsAuthenticated)
            ? request.User.Identity.Name
            : "(anonymous)";

        var apiPacket = new ApiPacket
        {
            CallerIdentity = identity
        };

        //buffer the request stream in order to intercept downstream reads
        var requestBuffer = new MemoryStream(); …
Run Code Online (Sandbox Code Playgroud)

c# owin

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