小编Mat*_*tin的帖子

隐式运算符使用接口

我有一个泛型类,我正在尝试实现隐式类型转换.虽然它主要起作用,但它不适用于界面转换.经过进一步调查,我发现存在编译器错误:"来自接口的用户定义转换"适用.虽然我知道在某些情况下应该强制执行,但我正在尝试做的事情似乎是合法的案例.

这是一个例子:

public class Foo<T> where T : IBar
{
    private readonly T instance;

    public Foo(T instance)
    {
        this.instance = instance;
    }
    public T Instance
    {
        get { return instance; }
    }
    public static implicit operator Foo<T>(T instance)
    {
        return new Foo<T>(instance);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用它的代码:

var concreteReferenceToBar = new ConcreteBar();
IBar intefaceReferenceToBar = concreteReferenceToBar;
Foo<ConcreteBar> concreteFooFromConcreteBar = concreteReferenceToBar;
Foo<IBar> fooFromConcreteBar = concreteReferenceToBar;
Foo<IBar> fooFromInterfaceBar = intefaceReferenceToBar; // doesn't work
Run Code Online (Sandbox Code Playgroud)

有没有人知道一个解决方法,或者任何人都能以令人满意的方式解释为什么我不能施展 interfaceReferenceToBar隐式地Foo<IBar>,因为在我的情况下它没有被转换,只包含在Foo中?

编辑: 看起来协方差可能提供救赎.我们希望C#4.0规范允许使用协方差隐式转换接口类型.

c# compiler-construction generics casting implicit-conversion

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

有没有办法在Jupyter笔记本上使用pipenv?

有没有办法在Jupyter笔记本上使用pipenv?

或者更具体地说,使用原子nteract /氢python 3内核?

python jupyter pipenv

52
推荐指数
2
解决办法
2万
查看次数

ISerializable接口有什么意义?

看起来我可以序列化没有该接口的类,所以我不清楚它的用途.

c# serializable iserializable

51
推荐指数
3
解决办法
4万
查看次数

如何以编程方式检查(解析)TSQL语句的有效性?

我正在努力使我的集成​​测试更具幂等性.一个想法是在每次测试后执行回滚,另一个想法是一些程序如何以编程方式解析文本,类似于查询分析器或SSMS中的绿色复选框.

如何在不使用ADO.NET运行SQL Server的情况下解析命令?

更新: 这是最终按预期工作的:

using (DbCommand executeOnly = Factory.DbCommand())
{
    executeOnly.Connection = command.Connection;
    executeOnly.CommandType = CommandType.Text;
    executeOnly.CommandText = "SET NOEXEC ON;" + sqlCommand;
    executeOnly.Connection.Open();
    executeOnly.ExecuteNonQuery();
}
//set more properties of command.
command.Execute();
Run Code Online (Sandbox Code Playgroud)

出于莫名其妙的原因," SET PARSEONLY ON"仅在查询分析器中有效.我无法在ADO.NET连接上设置它.它也是如此,因为PARSEONLY似乎只捕获语法错误,这不是一个常见的错误. SET NOEXEC ON将捕获更多种类的错误,例如引用缺少的表或列的视图或存储过程中缺少的参数.

.net c# t-sql sql-server ado.net

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

我怎么知道这个C#方法是否是线程安全的?

我正在为ASP.NET缓存项目删除事件创建一个回调函数.

文档说我应该调用一个对象或调用我知道将存在的调用(将在范围内),例如静态方法,但它说我需要确保静态是线程安全的.

第1部分:我可以采取哪些措施使其非线程安全?

第2部分:这是否意味着,如果我有

static int addOne(int someNumber){
    int foo = someNumber;
    return foo +1; 
}
Run Code Online (Sandbox Code Playgroud)

我叫Class.addOne(5); 和Class.addOne(6); 同时,我可能会返回6或7,具体取决于谁首先调用foo?(即比赛条件)

c# concurrency static-methods

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

如何将DBMS_OUTPUT.PUT_LINE的输出重定向到文件?

我需要在pl/sql中调试以计算程序的次数,我想使用:

SELECT systimestamp FROM dual INTO time_db;
DBMS_OUTPUT.PUT_LINE('time before procedure ' || time_db);
Run Code Online (Sandbox Code Playgroud)

但我不明白输出的位置,如何将其重定向到包含我想要收集的所有数据的日志文件?

oracle plsql oracle-sqldeveloper dbms-output

45
推荐指数
6
解决办法
27万
查看次数

使用所有静态方法的类有什么问题吗?

我正在进行代码审查,并遇到了一个使用所有静态方法的类.入口方法需要几个参数,然后开始调用其他静态方法传递入口方法接收的全部或部分参数.

它不像Math类具有很大程度上不相关的实用函数.在我自己的正常编程中,我很少编写Resharper弹出的方法并说"这可能是一个静态方法",当我这样做时,它们往往是无意识的实用方法.

这种模式有什么问题吗?如果类的状态保存在字段和属性中,或者使用参数在静态方法中传递,这只是个人选择的问题吗?

更新:传递的特定状态是数据库中的结果集.该类的职责是从DB的结果集中填充Excel电子表格模板.我不知道这有什么不同.

c# java oop

45
推荐指数
3
解决办法
4225
查看次数

在ASP.NET中使用SecureString有什么好处吗?

如果我理解正确,这是为了保持纯文本内存不足,以便应用程序可以安全地防止对内存,垃圾堆或分页到磁盘的内存的深奥攻击.SecureString被提供非托管字节,并在时间消耗一个非托管字节 - 然后字符串从内存中删除.(如果我离开,请纠正我!)

在ASP.NET中,秘密收集在webform中,后者以HTTPS格式发回.但随后Request对象变成从表单中的所有请求的值到名称值对,并将它们集合中,如请求["TxtPassword" - 所以我之前也可以得到字符串,它已经被不安全写入存储器.更糟糕的是,如果我使用的是控件,那么不安全的表示将在TextBox的属性中拥有更多的托管字符串.

要对此SecureString执行任何操作,我需要一个采用非托管字符串的API - 因此我似乎无法使用安全字符串来存储proc参数或其他内容.

我这样做是错误的还是尝试使用SecureString并且不将不安全字符串的副本泄漏到托管内存中这是一个愚蠢的错误?

切换到OAuth或Windows身份验证不是一种选择.

c# asp.net securestring

45
推荐指数
3
解决办法
9164
查看次数

有没有办法从Oracle中的PL/SQL刷新输出?

我有一个从shell脚本中调用的SQL脚本,需要很长时间才能运行.它目前包含dbms_output.put_line各个方面的陈述.这些打印语句的输出显示在日志文件中,但仅在脚本完成后才显示.

有没有办法确保在脚本运行时输出显示在日志文件中?

sql oracle plsql dbms-output

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

http:// localhost:50070无效HADOOP

我已经在我的机器"Ubuntu 13.05"上安装了Hadoop,现在我在浏览localhost时遇到错误:50070浏览器说该页面不存在.

hadoop

38
推荐指数
6
解决办法
9万
查看次数