小编Ban*_*San的帖子

typeof(T)与o.GetType()

对于一种方法

public void Foo<T>(T o)
{
    var oType = o.GetType();
    var tType = typeof(T);
}
Run Code Online (Sandbox Code Playgroud)

在选择使用哪一种功能或非功能时,我应该考虑什么?

乔恩的 回答如下.

我创造了一个小提琴演示它:

https://dotnetfiddle.net/Y4bAGf

.net generics performance

4
推荐指数
1
解决办法
50
查看次数

与本地Windows服务通信的“正确”方式

与本地运行的Windows服务进行通信的“正确”或至少“典型”方式是什么?

我可以看到,这是非常微不足道的使用WCF打开一个HTTP或TCP端点,但是这两个都是真正的网络协议。

我应该选择哪种协议来调用方法并从本地Windows服务接收响应?

.net c# windows windows-services

4
推荐指数
1
解决办法
949
查看次数

MongoDb在db.close()上抛出错误

我使用以下代码将文档保存到数据库:

MongoClient.connect(mongoUrl, function(error, db) {
    console.log('Mongo: error = \'' + error + '\' db = \'' + db + '\'');
    insertDocument(db, parsedDocument);
    db.close();
});

function insertDocument(db, document) {
    db.collection('test').insertOne(document, function(error, result) {
        console.log('Save document.  error = \'' + error + '\' result = \'' + result + '\'');
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将db.close()语句留在中,则会在错误对象中出现错误.如果我删除该行,则保存文档.

Received.  ID: '04023828-9ef3-4f10-b1d1-108208c9e3b7'
Mongo: error = 'null' db = '[object Object]'
Save document.  error = 'MongoError: server localhost:27017 sockets closed' result = 'undefined'
Run Code Online (Sandbox Code Playgroud)
  1. 为什么关闭数据库会导致错误?
  2. 不明确关闭连接是否安全?

javascript mongodb node.js node-mongodb-native

4
推荐指数
1
解决办法
2322
查看次数

MongoDB C#从组中获取最新文档

我有一组假装付款的状态,每个都有付款ID.

我想获取每个付款ID的最新状态.测试我创建了一些虚拟数据然后尝试查询它.我到目前为止:

[Test]
public void GetPaymentLatestStatuses()
{
    var client = new TestMongoClient();

    var database = client.GetDatabase("payments");

    var paymentRequestsCollection = database.GetCollection<BsonDocument>("paymentRequests");

    var statusesCollection = database.GetCollection<BsonDocument>("statuses");

    var payment = new BsonDocument { { "amount", RANDOM.Next(10) } };

    paymentRequestsCollection.InsertOne(payment);

    var paymentId = payment["_id"];

    var receivedStatus = new BsonDocument
                         {
                             { "payment", paymentId },
                             { "code", "received" },
                             { "date", DateTime.UtcNow }
                         };
    var acceptedStatus = new BsonDocument
                         {
                             { "payment", paymentId },
                             { "code", "accepted" },
                             { "date", DateTime.UtcNow.AddSeconds(-1) }
                         };
    var completedStatus …
Run Code Online (Sandbox Code Playgroud)

c# mongodb mongodb-query aggregation-framework mongodb-.net-driver

4
推荐指数
1
解决办法
4048
查看次数

.loadby sos clr - 找不到指定的模块

我试图找到我的转储文件中的CLR异常的底部,但我在尝试执行时遇到问题:

0:000> .loadby sos clr
The call to LoadLibrary(C:\ProgramData\dbg\sym\clr.dll\5348A1EF9a0000\sos) failed, Win32 error 0n126
    "The specified module could not be found."
Run Code Online (Sandbox Code Playgroud)

我试着看看加载了什么,我看到了:

0:000> lm
start             end                 module name
00000000`00190000 00000000`001a4000   MyTest   (deferred)             
00000000`77a00000 00000000`77afa000   user32     (deferred)             
00000000`77b00000 00000000`77c1f000   kernel32   (pdb symbols)          C:\ProgramData\dbg\sym\kernel32.pdb\CEE1211DAF10494CAFDDBE2C4232EAE82\kernel32.pdb
00000000`77c20000 00000000`77dca000   ntdll      (pdb symbols)          C:\ProgramData\dbg\sym\ntdll.pdb\8AAAEEE259C340FCADC53FAF9FEF22E92\ntdll.pdb
000007fe`f8950000 000007fe`f9ef1000   mscorlib_ni   (deferred)             
000007fe`f9f00000 000007fe`f9fd6000   MSVCR120_CLR0400   (deferred)             
000007fe`f9fe0000 000007fe`fa980000   clr        (pdb symbols)          C:\ProgramData\dbg\sym\clr.pdb\E3E0C76A7909454FB3C56B0C2CE5FFEB2\clr.pdb
000007fe`fa980000 000007fe`faa1d000   mscoreei T (pdb symbols)          C:\ProgramData\dbg\sym\mscoreei.pdb\6D65F80ABA3D403D8F6F7214972B9BBF2\mscoreei.pdb
000007fe`faa20000 000007fe`faa8f000   mscoree    (deferred)             
000007fe`fd800000 000007fe`fd80f000   CRYPTBASE   (deferred)             
000007fe`fdbb0000 000007fe`fdc1a000   KERNELBASE   (pdb …
Run Code Online (Sandbox Code Playgroud)

.net windbg sos

4
推荐指数
2
解决办法
6018
查看次数

NCrunch无法找到相对文件路径

我的app.config有一个对master.config的引用.

当NCrunch运行测试时,它无法找到master.config文件,因为它们从不同的目录运行; 因此,测试窗口始终显示为红色,并且在某种程度上违背了NCrunch的目的.

我怎样才能解决这个问题?

ncrunch

3
推荐指数
1
解决办法
644
查看次数

无法访问对象原型上的方法

我可以创建一个Cat对象并在它的原型上设置一个方法来打印出猫的名字.

var log = function(message) {
  var results = $('#result');
  results.append('<p>' + message + '</p>');
};

function Cat(name) {
  this.name = name;
}

Cat.prototype.speak = function() {
  log('My name is ' + this.name);
};

var fluffy = new Cat('Fluffy');
var tiddles = new Cat('Tiddles');

log(fluffy.name);
fluffy.speak();
log(tiddles.name);
tiddles.speak();
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"></div>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将猫的原型设置为动物时,我无法访问该speak方法:

function Animal(name, sound) {
    this.name = name;
    this.sound = sound;

    this.speak = function() {
        log(sound + '! My name is ' + name); …
Run Code Online (Sandbox Code Playgroud)

javascript

3
推荐指数
1
解决办法
5633
查看次数

如果重写方法返回不同的值,是否违反了Liskov原则?

下面是我的基类,它有ReturnAddress方法,返回'地址一',在子类中重写覆盖返回'地址二'的相同方法.

public class Base     
{         
     public virtual string ReturnAddress()        
     {             
         return "Address one";         
     }    
 }    


public class Derived : Base     
{                  
    public override string ReturnAddress()         
     {             
        return "Address Two";         
     }
}

//Object declaration for base and derived

Base base = new Base();

Derived der = new Derived();

var result = der.ReturnAddress(); // will return "Address Two"
but if we replace der object with base object 

var result = base.ReturnAddress(); //Will return "Address One"
Run Code Online (Sandbox Code Playgroud)

因此父对象无法替换子对象.

我想知道这是破坏Liskov原理的例子吗?

c# oop solid-principles

3
推荐指数
1
解决办法
316
查看次数

调用堆栈和评估堆栈是如何相关的?

第二次尝试表达这一点:

我正在采取一些步骤来掌握一些MSIL.

我一直听到"评估堆栈"被称为堆栈,操作在加载,使用等时被推送和加载.

因此,给出以下代码:

public class Program
{
    public static void Main()
    {
        var message = GetMessage();

        Console.WriteLine(message);
    }

    public static string GetMessage()
    {
        return "Hello World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

MSIL看起来如此:

.class public auto ansi beforefieldinit Program
    extends [mscorlib]System.Object
{
    .method public hidebysig specialname rtspecialname instance void .ctor () cil managed 
    {
        IL_0000: ldarg.0
        IL_0001: call instance void [mscorlib]System.Object::.ctor()
        IL_0006: ret
    }

    .method public hidebysig static string GetMessage () cil managed 
    {
        .locals init (
            [0] string V_0
        )

        IL_0000: nop …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net callstack cil

3
推荐指数
1
解决办法
535
查看次数

git reset --soft 似乎改变了索引

通读了Mark Dominus 的文章Scott Chanon 的文章后,我认为这git reset abcd --soft不会影响索引,但是,以下内容表明确实如此。

重置前

c1.txt, c2.txt,c3.txt在回购中,c4.txt在索引中。全部在工作目录中:

历史:

$ git log --oneline --decorate
b91d91b (HEAD, master) C3
231a5df C2
7e7b2d7 C1
Run Code Online (Sandbox Code Playgroud)

指数:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   c4.txt
Run Code Online (Sandbox Code Playgroud)

工作目录:

$ ls
c1.txt  c2.txt  c3.txt  c4.txt
Run Code Online (Sandbox Code Playgroud)

轻柔地重置为 C2 提交

$ git reset 231a --soft

$ git log --oneline --decorate
231a5df (HEAD, …
Run Code Online (Sandbox Code Playgroud)

git git-reset

3
推荐指数
1
解决办法
287
查看次数