草庐IT

dll-interface

全部标签

Unity之C#脚本编译dll

前言以前项目访问权限是,客户端开发可以查看前端的所有内容,包括C#脚本,lua代码等。现在项目组调整,C#代码权限仅主程可见,取而代之的是一个被编译成dll类型的文件。现在终于有空,来研究下C#脚本是如何编译成dll文件并调用C#中的类,方法等。准备首先创建一个DllTest场景。创建一个将被编译成dll的C#脚本,命名为TestLog,并增加一个方法打印输出,用于判断在调用该方法是否成功,成功将会在控制台输出“调用TestLog成功”。创建Text脚本,来测试调用dll是否成功。为相机挂载Text脚本编译dll准备工作完成了,接下来编译dll文件。点击后生成一个.asmdef文件,改成自己想

c# - 为什么当我将类转换为它未实现的接口(interface)时没有编译器错误?

如果我尝试从一个类到一个接口(interface)的无效转换,那么编译器不会报错(错误发生在运行时);但是,如果我尝试对抽象类进行类似的转换,它确实会提示。classProgram{abstractclassaBaz{publicabstractintA{get;}}interfaceIBar{intB{get;}}classFoo{publicintC{get;}}staticvoidMain(){Foofoo=newFoo();//compilererror,asexpected,sinceFoodoesn'tinheritaBazaBazbaz=(aBaz)foo;//nocom

c# - 如何对公共(public)接口(interface)后面高度复杂的代码进行单元测试

我想知道我应该如何通过NUnit测试这种功能。PublicvoidHighlyComplexCalculationOnAListOfHairyObjects(){//calls19privatemethodstotalling~1000linescode+comments+whitespace}从阅读中我看到NUnit不是为了测试私有(private)方法而设计的,这是出于关于单元测试应该是什么的哲学原因;但是试图创建一组测试数据来完全执行计算中涉及的所有功能几乎是不可能的。同时,计算被分解成许多更小的合理离散的方法。然而,它们并不是在逻辑上可以相互独立完成的事情,因此它们都被设置为私

c# - 构建与控制台和 DLL 相同的项目

我在VisualStudio中有一个C#项目,它以ConsoleApplication作为输出类型。但是我还需要这个项目的一个类库作为另一个解决方案。现在我每次都必须切换输出类型,但我想知道是否可以在相同的build-eventexe和dll/?是否有用于此的post-build-event? 最佳答案 据我所知,编译后无法更改输出类型。话虽如此,如果您的解决方案中可以有两个项目,例如Console和Library,它们将使用相同的源代码文件,但有不同的输出类型。这样,您将获得不同的输出,而无需任何重复代码。

c# - 在运行时动态选择要使用的 .dll 版本

我正在为SharePoint开发一个实用程序。它是适用于SharePoint2007和2010的应用程序。当我引用12.0.0.0版本的SharePoint.dll时,该应用程序适用于SharePoint2007,但不适用于2010。如果我引用14.0.0.0版本的dll,那么该应用程序适用于2010年,但不适用于2007年。通过使用以下代码查看文件系统,检查路径中的12(SharePoint2007)或14(SharePoint2010),我可以轻松判断我需要使用哪个.dll。System.IO.File.Exists(Environment.GetFolderPath(Enviro

c# - 接口(interface)可以定义 c#-constructor 的签名吗

我有一个.net-app,它提供了一种使用插件扩展应用程序的机制。每个插件都必须实现一个插件接口(interface),并且还必须提供一个接收一个参数(资源上下文)的构造函数。在插件类的实例化过程中,我通过反射查看是否存在所需的构造函数,如果存在,我将实例化该类(通过反射)。如果构造函数不存在,我会抛出一个异常,提示无法创建插件,因为所需的构造函数不可用。我的问题是,是否有一种方法可以在插件接口(interface)中声明构造函数的签名,以便实现插件接口(interface)的每个人也必须提供具有所需签名的构造函数。这将简化插件的创建。我不认为存在这种可能性,因为我认为这样的功能不属于

c# - 定向鼠标事件 [DllImport ("user32.dll")] 单击,双击

我试过了[DllImport("user32.dll")]staticexternboolSetCursorPos(intX,intY);并且将光标移动到所需点时效果很好。我以前从未尝试过这种DLL导入,但它有效:)。但是我想要更多我还能提取什么?主要是我想在没有任何鼠标输入的情况下双击、单击或使用滚轮选项,只是代码我该怎么做?以及如何检查user32dll中还包含什么?谢谢 最佳答案 [DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConv

c# - 如何从 VBScript 调用 C# DLL 函数

我的脚本在服务器上,所以我没有可用的UI交互,必须使用DLL而不是控制台应用程序。如何从VBScript调用C#DLL中的函数?如何使我的DLL成为COMVisible?我必须注册吗? 最佳答案 您需要通过设置COMVisibleAttribute将程序集标记为COM可见为真(如果您只想公开一种类型,则在程序集级别或类级别)。接下来注册它:regasm/codebaseMyAssembly.dll最后从VBScript中调用它:dimmyObjSetmyObj=CreateObject("MyNamespace.MyObject")

c# - 从 C# 中的接口(interface)创建对象

仅给定一个接口(interface),就可以从中创建一个对象吗?类似于:varobj=newIWidget();(我知道这段代码不对-VS仍然无法创建IWidget的实例)我的项目引用了接口(interface),我想创建具体对象并从方法中返回它们-但我不知道如何完全从接口(interface)创建对象。 最佳答案 您不能从界面创建对象。您可以从使用该接口(interface)的类创建对象。例如:IListx=newIList();将不起作用。IListx=newList();会。不能创建接口(interface),只能创建使用接口

c# - 引用 DLL 未在 Visual Studio 2010 中加载

我正在VS2010中开发C#4.0项目,需要使用一些较旧的DLL,其中包含在VS2008上的C#3.5中创建的控件。当我第一次将DLL添加到引用时,我能够通过智能感知看到命名空间并创建其中一个控件的实例,但是当我去构建时,它给了我以下错误:Thetypeornamespacename'BCA'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)而且我确实已经为该命名空间设置了一个using指令,它现在带有红色下划线,表明VS无法找到它。现在,智能感知根本不会选择该namespace。我什至尝试将控件添加到