小编cvb*_*ros的帖子

Json.NET如何在反序列化期间执行依赖注入?

当我有一个没有默认构造函数的类,即使用依赖注入来传递其依赖项时,可以Newtonsoft.Json创建这样的对象吗?

例如:

public class SomeFoo
{
    private readonly IFooDependency _dependency;

    public SomeFoo(IFooDependency dependency){
        if(dependency == null)
            throw new ArgumentNullException("dependency");

        _dependency = dependency;
    }

    public string Data { get; set; }
    public int MoreData { get; set; }

    public void DoFoo(){
        Data = _dependency.GetFooData();
        MoreData = _dependency.GetMoreFooDate();
    }
}
Run Code Online (Sandbox Code Playgroud)

在序列化过程中,我只关心存储Data和MoreData(以及对象的类型,但暂时不要让事情复杂化).现在,为了反序列化,我可以调用类似的东西

var obj = JsonConvert.DeserializeObject<SomeFoo>(jsonText);
Run Code Online (Sandbox Code Playgroud)

如何让JsonConvert了解我的DI容器?

(注意:解决方法是在我的类中始终使用默认构造函数,并在那里调用Service Locator以获取我需要的任何依赖项.我只是在寻找一些更简洁的解决方案而不用这些构造函数来规划我的类).

c# json dependency-injection ninject json.net

17
推荐指数
2
解决办法
7554
查看次数

内容协商返回HTML

在阅读了关于如何使用Web API 2返回HTML的博客文章之后,我想根据请求发送的标题以某种方式将其"连线" 到我的网上.IHttpActionResultIHttpActionResultApiControllerAccept

给定具有与此类似的签名的控制器操作:

public MyObject Get(int id)
{
    return new MyObject();
}
Run Code Online (Sandbox Code Playgroud)

如果请求指定了Accept: text/html,则IHttpActionResult应该使用它来返回HTML.那可能吗?此外,对于这个内容协商管道如何为json或xml(具有内置支持)工作的一些见解将不胜感激.

html c# content-negotiation asp.net-web-api

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

将值注入注入的依赖项

我有这样的事情:

class Root
{
    public Root(IDependency dep)
    {}
}
class Dependency:IDependency
{
    public Dependency(int val)
    {}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用ninject获取对Root的引用.所以我这样配置它

var module = new InlineModule(mod => mod.Bind<IDependency>().To<Dependency>());

var kernel = new StandardKernel(module);
Run Code Online (Sandbox Code Playgroud)

我想向Dependency注入一些'val'值,这个值仅在从ninject获取Root引用时才知道.

我想做的是这样的事情:

Kernel.Instance.Get<Root>(With.Parameters.ConstructorArgument("val", 12));
Run Code Online (Sandbox Code Playgroud)

使用ninject 1.0是否可以这样?

dependency-injection ninject

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

将工作日字符串解析为 time.Weekday

我遇到了将星期几字符串转换为time.Weekday值的问题。我找不到time包中内置的任何东西。

然后我编写了这个简单的函数(满足了我的需求):

var daysOfWeek = [...]string{
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
}

func parseWeekday(v string) (time.Weekday, error) {
    for i := range daysOfWeek {
        if daysOfWeek[i] == v {
            return time.Weekday(i), nil
        }
    }

    return time.Sunday, fmt.Errorf("invalid weekday '%s'", v)
}
Run Code Online (Sandbox Code Playgroud)

在 Golang 中是否有其他推荐更惯用的方法来执行此转换?

谢谢!

string time go

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

'void'是函数的有效返回值吗?

private void SaveMoney(string id...)
{
    ...
}

public void DoSthWithMoney(string action,string id...)
{
    if(action=="save") return SaveMoney(string id);
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么C#不允许我通过公共函数返回私有函数的空白?它甚至是相同的数据类型"无效"......

或者数据类型是否无效?

以下代码真的是最短的解决方法吗?

if(action=="save") {
    SaveMoney(string id);
    return;
}
Run Code Online (Sandbox Code Playgroud)

c# return void

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