草庐IT

dll-interface

全部标签

c# - 具有多重实现的协变接口(interface)的泛型类型推断,如何解决它?

考虑这个什么都不做的愚蠢程序:interfaceI{}classA1:I{}classA2:A1,I{}classB1{}classB2:B1,I{}classC1:I{}classC2:C1,I{}staticclassProgram{staticvoidf(Iobj){}staticvoidMain(){f(newA2());f(newA2());f(newB2());f(newB2());f(newC2());f(newC2());}}这表明A2和C2同时实现I和I,那B2同时实现I和I.但是,将其修改为staticvoidMain(){f(newA2());f(newB2())

c# - 在 C# 中处理共享 dll 的最佳方法是什么?

在我的团队中,我们有数百个共享dll,其中许多还引用其他dll,而这些dll本身又引用其他dll,等等。我们已经开始为所有我们认为足够通用以用于其他项目的dll使用“共享”目录,例如数据库通信dll。问题是如果其中一个dll一直沿树向下更改,那么引用它的所有内容都需要重新编译以避免版本控制问题(在运行时发生)。为了避免这种情况,现在有人讨论将我们所有的“共享”dll添加到一个大程序集中,任何创建新应用程序的人都只需引用它,并且仅引用它。这显然会变得越来越大,我不确定这是否是最好的方法。有什么想法吗? 最佳答案 我们所做的是将共享DL

c# - 你能模拟一个实现接口(interface)和抽象类的对象吗?

是否可以使用Moq模拟一个实现接口(interface)和抽象类的对象?即:publicclassMyClass:SomeAbstractClass,IMyClass你能mock这个吗? 最佳答案 您可以模拟任何接口(interface)以及任何抽象或虚拟成员。基本上就是这样。这意味着以下情况是绝对可能的:varimock=newMock();varaMock=newMock();如果继承自SomeAbstractClass的成员没有被密封,你也可以mockMyClass:varmcMock=newMock();这是否有意义取决于M

c# - 使用代码契约来定义不可变接口(interface)?

我可以使用代码契约在接口(interface)上定义只读、不变的属性吗?IE。实例化后始终产生相同值的属性? 最佳答案 首先注意.NET中的术语:只读:您碰巧拥有的接口(interface)不能用于改变对象或集合不可变的:没有什么可以改变对象或集合现在回到你的问题。在.NET代码约定中,所有属性getter都隐式标记为“纯”。这意味着从getter中读取永远不会有明显的副作用。从严格意义上讲,如果您有一个只有只读属性的抽象接口(interface),那么整个接口(interface)都被认为是只读的。但是,听起来您真正想要的是一种将

c# - 如果声明是接口(interface),编译器无法识别泛型中的属性

查看以下演示我的VisualStudio2017编译器问题的内容publicinterfaceIFoo{stringKey{get;set;}}publicclassFoo:IFoo{publicstringKey{get;set;}}classProgram{staticvoidMain(string[]args){PrintFoo(newFoo(){Key="HelloWorld"});Console.ReadLine();}privatestaticvoidPrintFoo(Tfoo)whereT:IFoo{//setbreakpointhereandtrytolookatfoo

c# - 开放实现的开放通用接口(interface)类型不等于接口(interface)类型?

在我看来,这是一个应该通过但没有通过的测试。[TestMethod]publicvoidcan_get_open_generic_interface_off_of_implementor(){typeof(OpenGenericWithOpenService).GetInterfaces().First().ShouldEqual(typeof(IGenericService));}publicinterfaceIGenericService{}publicclassOpenGenericWithOpenService:IGenericService{}为什么没有通过?给定Typet=

c# - 用于创建新接口(interface)和创建新基本单元测试的 Visual Studio 快捷方式

在VisualStudio中,您可以按SHIFT+ALT+C来创建新的类文件。我正在寻找新接口(interface)文件和新“基本单元测试”文件的类似快捷方式。我有TelerikJustCode,所以请不要推荐类似的产品。但是,例如,如果存在一个小的扩展,那将是一件很高兴的事情。顺便说一句,我正在使用VisualStudio2010(C#)。 最佳答案 对此没有内置解决方案,但您可以轻松录制宏(在工具菜单中):您可以在宏资源管理器中重命名它们(Alt+F8)然后您可以在工具→选项→键盘中为这些宏分配快捷方式。编辑这不适用于添加新的基

c# - 从 C# DLL 动态获取代码

我想看看DLL(可能在不同机器上编译)是否相同。为此,我正在做的是加载DLL并计算MD5,这因DLL在不同机器上失败(但具有相同的源)而失败。这似乎是由于在编译时添加了其他元数据(正如有人提到的here)。我想对整个DLL进行逆向工程,看看代码是否匹配,但是,我有两个问题:我只能找到执行此操作的工具,我似乎找不到C#库或类似的东西来满足我的需要。我不能100%确定反编译的源代码在不同机器上编译的源代码是否相同。如有任何提示、提示和指点,我们将不胜感激。 最佳答案 您可能是对的-它可能是元数据。不过,我认为这不一定是最有可能的可能性。

c# - 在实现自己的 IUserStore 时,类上的 "optional"接口(interface)实际上是可选的吗?

我正在使用Microsoft的Asp.NetIdentity框架版本2,并且正在实现我自己的IUserStore。我的新类MyUserStore实现IUserStore接口(interface)和IUserPasswordStore,这是与UserManager一起使用所需要的类(class)。或者至少这是我从阅读this等教程中收集到的信息:"TheonerequiredinterfaceintheidentitysystemisIUserStore"-ScottAllen但是我运行代码的时候好像不是这样。我初始化我的管理器:varuMan=newUserManager(newMyU

c# - Web API IValueProvider 接口(interface)的 ContainsPrefix 方法的用途是什么?

我已经为我的WebAPI项目创建了一些IValueProvider的实现,但我对接口(interface)上的ContainsPrefix方法的用途感到困惑。ContainsPrefix方法具有以下摘要注释:Determineswhetherthecollectioncontainsthespecifiedprefix.但是该方法的摘要是抽象的,并没有解释将向该方法提供什么prefix或该方法提供什么功能。prefix会成为Action参数名称吗?Action名称?Controller名称?其中任何一个的前三个字母?是否存在此方法来自动确定IValueProvider应该为哪个操作参数