小编Myl*_*ell的帖子

.NET 4.0协方差

在回答另一个问题时,我试图做到以下几点.我不认为我正确地解释了这个问题,但我确实想知道下面是否可能以某种方式(我的尝试失败),如果不是为什么不:

    public class MyBaseClass { }

    public class MyClass : MyBaseClass { }

    public class B<T> { }

    public class A<T> : B<T> { }

    static void Main(string[] args)
    {
        // Does not compile
        B<MyBaseClass> myVar = new A<MyClass>();
    }
Run Code Online (Sandbox Code Playgroud)

我认为这可以使用具有协变类型参数的通用接口来工作:

    interface IB<out T> { }

    public class B<T> : IB<T> { }
Run Code Online (Sandbox Code Playgroud)

但我错了,这也行不通.

编辑

正如SLaks指出的那样'接口是协变的; 上课不是.' (感谢SLaks).所以现在我的问题是为什么?这个设计背后的想法(我认为Eric Lippert的一个想法)是不可能的,不受欢迎的还是在'也许是一天'的名单上?

.net c# generics covariance

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

创建类型的默认实例

什么是反射相当于:

default(object);  //null
Run Code Online (Sandbox Code Playgroud)

当我在运行时之前没有类型时,例如

public void Method(Type type)
{
   var instance = type.CreateDefault(); //no such method exists, but I expect there is a way of doing this?
} 
Run Code Online (Sandbox Code Playgroud)

.net c# reflection

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

ReSharper添加二进制refs而不是项目引用

我们遇到了ReSharper(7/VS2010)的问题:当您使用它在同一个解决方案中将一个项目的引用添加到另一个项目时,它有时会向引用项目的输出添加二进制引用而不是项目引用.是否可以禁用此行为,理想情况下,它只添加项目引用,但无法完全禁用添加引用?

resharper visual-studio-2010 visual-studio-2012

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

选择没有唯一键的单行

我有一张这样的桌子

Fld1   Fld2  Fld3
------------
0      1234  ABC
0      1235  DEF
1      1236  GHI
2      1236  JKL
3      1236  MNO
4      1237  PQR
5      1237  STU
6      1237  VWX
Run Code Online (Sandbox Code Playgroud)

请注意,这两列都不是唯一的.Fld1 = 0可能有很多行,但对于所有其他值,Fld1将是唯一的,并且Fld2可能有许多行具有相同的值.

我需要为Fld2的每个值选择一行,其中Fld 1中的值最高.因此基于上述数据的结果将是

Fld1    Fld2   Fl4
------------------
0       1234   ABC
0       1235   DEF
3       1236   MNO 
6       1237   VWX
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

Go gRPC 客户端连接范围和池化

考虑 Go gRPC 代码库中的示例:

func main() {
    // Set up a connection to the server.
    conn, err := grpc.Dial(address, grpc.WithInsecure())
    if err != nil {
        log.Fatalf("did not connect: %v", err)
    }
    defer conn.Close()
    c := pb.NewGreeterClient(conn)

    // Contact the server and print out its response.
    name := defaultName
    if len(os.Args) > 1 {
        name = os.Args[1]
    }
    r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
    if err != nil {
        log.Fatalf("could not greet: %v", err)
    }
    log.Printf("Greeting: %s", r.Message)
}
Run Code Online (Sandbox Code Playgroud)

当从另一个服务使用 gRPC …

go grpc

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

在Eclipse中运行Go测试

我安装了eclipse和goclipse,一切都很好,我可以在IDE中运行一个控制台应用程序.也可以在IDE中执行单元测试吗?

unit-testing go

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

使用MonoDevelop同时查看多个源文件

以上可能吗?我经常使用灵活的窗口对接系统在VS中进行(通常是将测试和测试目标一起显示).有没有办法在MonoDevelop中实现同样的目标?

mono monodevelop

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

NancyFX:反序列化JSON

文档建议NancyFx帮助我对json请求体进行WRT反序列化,但我不确定如何.请参阅以下测试以证明:

[TestFixture]
public class ScratchNancy
{
    [Test]
    public void RootTest()
    {
        var result = new Browser(new DefaultNancyBootstrapper()).Post(
            "/",
            with =>
                {
                    with.HttpRequest();
                    with.JsonBody(JsonConvert.SerializeObject(new DTO {Name = "Dto", Value = 9}));
                });

        Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
    }

    public class RootModule : NancyModule
    {
        public RootModule()
        {
            Post["/"] = Root;
        }

        private Response Root(dynamic o)
        {
            DTO dto = null;//how do I get the dto from the body of the request without reading the stream and deserializing myself?

            return HttpStatusCode.OK;
        }
    }

    public class …
Run Code Online (Sandbox Code Playgroud)

.net rest json nancy

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

检查以确定go代码是否已格式化

我的目标是在提交时强制执行go源代码的格式。有没有一种方法可以确定go fmt在一个文件/一组文件上运行是否会进行任何更改?我能想到的唯一技术是:

  • 存储当前时间t
  • 在源代码上运行go fmt
  • 循环访问源文件,以查看是否有最后修改日期> t

我可以编写工具/脚本来执行此操作,并在构建循环CI期间执行。我想检查一下是否在继续之前没有重新发明轮子。

go

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

在.NET中传递顺序进程

我最近一直在和Go一起工作,我想到也许可以将相同的CSP模型构建到未来的.NET版本中.我不是简单地讨论一个新的库,它使用现有的线程原语来提供通道类型和类似的编程经验/模型; 我的意思是在整个VM和编译器中实现模型,以生成与Go相当的可执行代码(我相信Go生成在事件循环上执行的代码)

这可行吗?以前有人谈过吗?......或者我一直在"喝太多的kool-aid".在完全理解如何实现这一点方面,我绝对不会深入了解这一点.

.net go

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