对于一种方法
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)