草庐IT

type_for_extension

全部标签

c# - 使用反射检查方法是否为 "Extension Method"

作为我的应用程序的一部分,我有一个接收MethodInfo的函数,并且需要根据该方法是否为“扩展方法”对其执行特定操作。我检查了MethodInfo类,但找不到任何显示该方法是扩展的IsExtension属性或标志。有谁知道如何从方法的MethodInfo中找到它? 最佳答案 您可以在MethodInfo实例上调用IsDefined方法,通过检查ExtensionAttribute是否应用于该方法来找出这一点:boolisExtension=someMethod.IsDefined(typeof(ExtensionAttribute

c# - 检查 System.Type 是否是给定类的后代的最佳方法

考虑以下代码:publicclassA{}publicclassB:A{}publicclassC:B{}classD{publicstaticboolIsDescendantOf(thisSystem.TypethisType,System.TypethatType){///???}voidMain(){AcValue=newC();C.GetType().IsDescendantOf(cValue.GetType());}}实现IsDescendantOf的最佳方法是什么? 最佳答案 Type.IsSubclassOf()判断当

c# - T4代码生成: access types in current project

使用T4代码生成,是否可以访问当前项目中定义的类型?例如,如果我有一个接口(interface)并且我想将它的实现委托(delegate)给另一个类,即interfaceIDoSomething{publicvoiddo_something();}classDoSomethingImpl:IDoSomething{publicvoiddo_something(){//implementation...}}classSomeClass:IDoSomething{IDoSomethingm_doSomething=newDoSomethingImpl();//forwardcallstoi

c# - ASP.net 核心网络 API : Using Facebook/Google OAuth access token for authentication

这几天我一直在尝试使用Google和Facebook进行OAuth身份验证,以便在我的ASP.net核心WebAPI项目中工作。我目前的状态是:我有一个ASP.net核心WebApi项目,其中的用户需要进行身份验证我有一个Angular2网络应用程序,它应该使用我的网络API(需要身份验证)我有一个android应用程序,它应该使用我的webapi(需要身份验证)我的目标是:使用Google/Facebook作为OAuth提供商进行登录稍后:添加自己的用户帐户(可能使用IdentityServer4)无需重定向到特殊的登录网站(如IdentityServer4解决方案)。只需点击应用程

c# - 具有多个 Contains/Any for RavenDB 的 Linq 查询

我有一个包含“标签”列表的文档类。像这样的东西:classItem{stringName{get;set;}ListTags{get;set;}}现在我想为RavenDB创建一个查询,将所有按标签列表过滤的项目交给我。在使用EntityFramework时,我设法通过这样的方式做到了这一点:varquery=GetQueryable();foreach(vartagintags){query=query.Where(i=>i.Tags.Contains(tag));}但是,这似乎不适用于RavenDB,很可能是因为不支持包含。我也尝试使用Any,(Where(i=>i.Tags.Any

c# - VS2010 中的 2.0 框架 .net 引用缺少 System.web.extensions 引用 dll?

我遇到了与此类似的问题person.我正在尝试使用visualstudio2010中使用2.0框架的旧项目。但是,当它在添加时过滤到2.0框架时,它不会识别System.web.extensionsdll是该框架的一部分引用对话框。不,我的框架只是设置为“.NETFramework2.0”,因为没有2.0客户端。如有任何帮助,我们将不胜感激。现在我只是用记事本手动进入csproj文件并添加到引用中。这似乎有效。有没有一种方法可以让我对我正在处理的其他项目执行此操作,或者我是否只需要在每个项目的csproj文件中手动添加它? 最佳答案

c# - 在 C# 中实现安全的鸭子类型(duck typing)

看了之后如何Go处理接口(interface)并喜欢它,我开始考虑如何在C#中实现类似的duck-typing,如下所示:varmallard=newMallard();//doesn'timplementIDuckbuthastherightmethodsIDuckduck=DuckTyper.Adapt(mallard);DuckTyper.Adapt方法将使用System.Reflection.Emit动态构建适配器。也许有人已经写过这样的东西。我想这与模拟框架已经做的并没有太大不同。但是,如果Mallard实际上没有正确的IDuck方法,这将在运行时抛出异常。为了在编译时尽早发

c# - for 循环优化 - 需要还是不需要?

我是否必须像下面那样优化我的FOR循环,或者编译器会为我做这件事?//thisisslow,right?for(inti=0;i附言。我敢打赌这已经发布了,但我还没有找到任何东西,很抱歉可能是假的。PPS。抱歉,我编写了很多JavaScript-我们必须考虑这些优化...在.net世界中可能看起来很荒谬。 最佳答案 好吧,这取决于DropDownItems.Count是如何实现的-但坦率地说,它可能是一个简单的字段支持的属性......这将成为第一个代码与第二个一样快,但可读性更高。首先是可读性-然后衡量性能并仅在必要时进行微优化。

c# - 嵌入式 RavenDB 出现 "Could not find transactional storage type"错误

我能够根据在以下位置找到的代码成功运行RavenDB的简单测试:http://ravendb.net/tutorials/hello-world接下来我尝试以嵌入式方式运行它,但我不断收到以下错误:Message:Couldnotfindtransactionalstoragetype:Raven.Storage.Esent.TransactionalStorage,Raven.Storage.EsentStackTrace:atRaven.Database.Config.InMemoryRavenConfiguration.CreateTransactionalStorage(Act

c# - Any CPU dependent on C++/CLI dependent on native C dll (any cpu for c++/cli)

这是我的问题。我正在用C#包装一个Cdll。为此,我首先编写了一个C++/CLI包装器。nativeC库链接到C++/CLI包装器。(C++/cli项目中的链接器属性)。现在是这样组织的:-nativeC.lib:x86和64位。1个包含2个项目的解决方案:链接到原生C.lib的C++/CLI包装器项目C#项目引用C++/CLI项目我的问题是我需要C#来定位“任何CPU”。但此选项在C++/CLI中不可用,因为它直接编译为native代码。我的解决方案是:-在x86中编译C++/CLI包装器,然后更改配置并编译为64位。编译时,我想告诉它根据平台采用哪个dll。即:如果以64位编译,则