对于一种方法
public void Foo<T>(T o)
{
    var oType = o.GetType();
    var tType = typeof(T);
}
Run Code Online (Sandbox Code Playgroud)
在选择使用哪一种功能或非功能时,我应该考虑什么?
我创造了一个小提琴演示它:
与本地运行的Windows服务进行通信的“正确”或至少“典型”方式是什么?
我可以看到,这是非常微不足道的使用WCF打开一个HTTP或TCP端点,但是这两个都是真正的网络协议。
我应该选择哪种协议来调用方法并从本地Windows服务接收响应?
我使用以下代码将文档保存到数据库:
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)
我有一组假装付款的状态,每个都有付款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
我试图找到我的转储文件中的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) 我的app.config有一个对master.config的引用.
当NCrunch运行测试时,它无法找到master.config文件,因为它们从不同的目录运行; 因此,测试窗口始终显示为红色,并且在某种程度上违背了NCrunch的目的.
我怎样才能解决这个问题?
我可以创建一个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) 下面是我的基类,它有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原理的例子吗?
第二次尝试表达这一点:
我正在采取一些步骤来掌握一些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) 通读了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)
$ git reset 231a --soft
$ git log --oneline --decorate
231a5df (HEAD, …Run Code Online (Sandbox Code Playgroud)