小编Eng*_*ock的帖子

如何设计两个相似(但不完全)的类?

情况就是这样.我们有两台来自不同供应商(制造商)的打印机.我们希望顶级代码不会意识到有关提供程序的详细信息,只需使用统一的API.所以我开始提取界面.

public interface IPrinterProvider {
    bool Connect(string comPort);
    bool IsConnected();
}
Run Code Online (Sandbox Code Playgroud)

好.现在,我意识到一台打印机需要Password属性,但另一台则不需要.所以我该怎么做?

再一次.据我所知,我将有一个或几个接口和几个实现者.但是呼叫者将如何工作?我应该创建一个单独的类,它可能不实现任何接口?例如:

public class CommonPrinterProvider {
    private IPrinterProvider printerProvider;
    public CommonPrinterProvider(IPrinterProvider printerProvider) {
        this.printerProvider= printerProvider;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,总共有两个问题.

.net c# architecture solid-principles

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

SQL Server 用于解析的默认区域性

当我运行以下语句时:

SELECT CAST ('12/08/1988' AS DATE) AS BIRTHDAY
Run Code Online (Sandbox Code Playgroud)

我得到的是 1988-12-08,而不是 ISO 8601 格式的 1988-08-12。SQL Server 如何决定申​​请解析的格式?我知道最佳实践,我只是对它在哪里以及如何更改感兴趣?

sql t-sql sql-server

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

带有默认值的 Unpickling 和 args 的问题

假设我有一堂课:

class Character():

    def __init__(self):
        self.race = "Ork"
Run Code Online (Sandbox Code Playgroud)

我创建了一个实例并对其进行了腌制。

c = Character()

import pickle
with open(r'C:\tmp\state.bin', 'w+b') as f:
    pickle.dump(c, f)
Run Code Online (Sandbox Code Playgroud)

当我尝试解开它时,一切正常。但是如果我想为 Character 添加另一个属性怎么办?我去这个:

class Character():

    def __init__(self):
        self.race = "Ork"
        self.health = 100
Run Code Online (Sandbox Code Playgroud)

假设我想取消我们没有health属性的旧版本。如果我只是从文件中解压数据,则对象将不具有该health属性。为了以正确的方式实现它,按照“Effective Python”一书中的内容,我需要引入具有默认值的参数并将其copyreg发挥作用。

所以,我这样做:

class Character

    def __init__(self, race = "Ork", health = 100):
        self.race = race
        self.health = health

import copyreg 

def pickle_character(state):
    kwargs = state.__dict__
    return unpickle_character, (kwargs, )

def unpickle_character(kwargs):
    return Character(**kwargs)

copyreg.pickle(Character, pickle_character)
Run Code Online (Sandbox Code Playgroud)

现在 unpickling 应该可以正常工作:

with …
Run Code Online (Sandbox Code Playgroud)

python serialization pickle

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

RemoteCertificateNameMismatch.名称问题

不建议从验证回调中返回true.这是一个不好的做法.由于我不知道cerfificate验证的最佳实践,我想依赖于默认实现,但我完全不明白如果客户端尝试连接到"https:/"应该指定服务器证书的名称/192.168.0.64/Company/ServiceReference.svc/MainService"?

security ssl wcf

0
推荐指数
1
解决办法
4191
查看次数

如何避免DeploymentItem?我需要立即为所有测试部署一个文件

我想在代码中从一个地方部署一个文件,我不想用相同参数的相同属性来装饰很多测试.

我用mstest.

c# deployment unit-testing mstest

0
推荐指数
1
解决办法
1362
查看次数