考虑以下: template<typename Der> struct Base { // NOTE: if I replace the decltype(…) below with auto, code compiles decltype(&Der::operator()) getCallOperator() const { return &Der::operator(); } }; struct Foo : Base<Foo> { double operator()(int, int) const { return 0.0; } }; int main() { Foo f; auto callOp = f.getCallOperator(); } 我想根据派生类中operator()签名在CRTP基类中创build一个返回types的成员函数。 然而decltype(&Der::operator())不能编译; Foo的operator()成员函数不可见。 我认为这是因为基类模板在Foo完全定义之前被实例化。 令人惊讶的是,如果我放置auto返回types它编译。 […]
简洁版本: C#代码 typeof(string).GetField("Empty").SetValue(null, "Hello world!"); Console.WriteLine(string.Empty); 编译运行时,输出"Hello world!" 在.NET 4.0和更低版本下,但在.NET 4.5和.NET 4.5.1下给出了"" 。 如何可以忽略写入字段,或谁重置此字段? 更长的版本: 我从来没有真正理解为什么string.Empty字段(也称为[mscorlib]System.String::Empty )不是const (又名literal ),请参阅“ 为什么不是String.Empty常量? ”。 这意味着,例如,在C#中我们不能在以下情况下使用string.Empty : 在case string.Empty:的switch语句中case string.Empty: 作为可选参数的默认值,如void M(string x = string.Empty) { } 应用属性时,如[SomeAttribute(string.Empty)] 其他需要编译时常量的情况 这对有关是否使用string.Empty或""的众所周知的“宗教战争”有影响,请参阅“ 在C#中,我应该使用string.Empty还是String.Empty或”“来intitialize一个string? 几年前,我通过反思将Empty设置为其他string实例,并且看到BCL中有多less部分开始因为它而奇怪地行为。 这是相当多的。 Empty引用的变化似乎在应用程序的整个生命周期中一直存在。 现在,有一天我试着重复那个小小的特技,但是后来使用了一个.NET 4.5的机器,我不能再这样做了。 (注意!如果你的机器上有.NET 4.5,可能你的PowerShell仍然使用旧版本的.NET,所以试试copy- [String].GetField("Empty").SetValue($null, "Hello world!")到PowerShell中以查看更改此引用的一些效果。) 当我试图寻找这个原因时,我偶然发现了一个有趣的线程“ .NET 4.5 beta中这个FatalExecutionEngineError的原因是什么? ”。 在这个问题的接受答案中,是否注意到通过4.0版本, System.String有一个静态构造函数.cctor ,其中设置了Empty字段(在C#源代码中,当然可能只是字段初始值设定项)而在4.5中不存在静态构造函数。 […]
有没有人知道postharp的开源替代多数民众赞成在易于使用和支持基于属性的东西? 我见过的AspectDNG有点类似,但是创build这些属性就像c ++代码,需要不同的编译forms 我知道windsor,ninject,Spring.Net等,但他们都没有像postsharp自定义属性。 我正在寻找一些程序,可以让我在事件发生之前使用自己的自定义属性。 我将不胜感激任何build议。 谢谢 编辑:这个问题,具体描述这些问题,它应该支持属性之前没有被问到。 所以,请不要closures这个问题。 这不是重复的。 编辑:为什么我怕postharp? PostSharp到目前为止是最好的,但它是商业的,看起来不确定/风险大的项目使用免费版本。我们永远不知道什么时候他们可能会停止他们的免费版本。 编辑:感谢所有的投票和最喜欢的补充。 到目前为止,我已经find了这个:http: //zinject.codeplex.com/,但它是法文。 请提供更多的build议,如果任何人find其他的东西。
比方说,我有工厂函数处理基类和派生类: #include <memory> using namespace std; struct B { virtual ~B() {} }; struct D : B {}; unique_ptr<B> MakeB() { auto b = unique_ptr<B>( new B() ); return b; // Ok! } unique_ptr<B> MakeD() { auto d = unique_ptr<D>( new D() ); return d; // Doh! } 在上面的最后一行,我需要move(d)为了使其工作,否则我得到“错误:从std::unique_ptr<D>无效转换为std::unique_ptr<D>&& 。 我的直觉说,在这种情况下,编译器应该知道它可以隐含地将一个右值赋给基指针,但是它不会。 这是不符合我的编译器(gcc 4.8.1和VS2012)? unique_ptr的预期devise? 标准中的缺陷?
我有以下代码,当我使用System.IdentityModel.Tokens.Jwt,版本= 4.0.20622.1351 private static void ConfigureAzureAD(IAppBuilder appBuilder) { appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = ConfigurationManager.AppSettings["ida:Tenant"], TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters { ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] } }); } 然而,只要我升级这个包到最新的版本5,它不再编译抱怨引用types“TokenValidationParameters”声明它定义在System.IdentityModel.Token.Jwt中,但它不能被发现。 另外,如果您尝试使用以下编译器,则会警告您Audience已过时 : private static void ConfigureAzureAD(IAppBuilder appBuilder) { appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { Tenant = ConfigurationManager.AppSettings["ida:Tenant"], Audience = ConfigurationManager.AppSettings["ida:Audience"] }); } 我再次降级这个DLL,并使用版本4.0.20622.1351,它开始编译。 是否对configurationAzure Active Directory进行了语法更改? 在Github上,我找不到使用最新的5.0.0包的单个项目,并且他们都使用之前的包4.0.20622.1351。 任何人都可以使用最新的System.IdentityModel.Tokens.Jwt 5.0.0揭示这一点,或者使用最新的包引导我到Github上的一些项目?
有一些代表在C#中预定义 我知道这些: EventHandler // Default event callbacks EventHandler<T> // Default event callbacks with custom parameter (inheriting from EventArgs) Action // Function without return value and without parameter Action<T1, T2, T3, T4> // Function without return value and 1-4 parameters Func<T1, T2, T3, T4, TResult> // Methos with 0-4 parameters and one result type Predicate<T> // […]
我一直在玩Dapper,但是我不确定处理数据库连接的最佳方法。 大多数示例显示了在示例类中甚至在每个方法中创build的连接对象。 但是我觉得在每个clss中引用连接string都是错误的,即使它是从web.config中提取的。 我的经验是使用DbDataContext或DbContext与Linq到SQL或entity framework,所以这对我来说是新的。 在使用Dapper作为我的数据访问策略时,如何构build我的Web应用程序?
我曾经使用valgrind来检测Mac OS X 10.6(Snow Leopard)和10.7(Lion)上的C / C ++应用程序的内存泄漏,但是我发现在10.8(Mountain Lion)和10.9(Mavericks)当我升级我的操作系统。 还有什么可以安装在Mac OS X 10.9上的valgrind吗?
我是新来的ASP.NET MVC,我一直在开发一个MVC 5应用程序与个人用户authentication。 我一直在做分层模式,当做我的应用程序,如分离模型层,DAL层,回购等,但现在在MVC 5,我想能够使用用户和angular色pipe理和身份validation,他们称之为身份,然后对我的应用程序仍然具有这种分层结构,因为现在看起来,Identity与MVC项目本身以及用户和angular色模型以及上下文都非常相关。 我现在在应用程序中所做的是在MVC项目(在单独的文件夹中)中,我拥有所有我想要的单独图层,例如我的DAL,UnitOfWork,Repos,其他模型等,以便使其工作,现在。 而且我知道这不是正确的做法。 那么,任何人都可以向我提供一些关于这个问题的好例子或文章,或者如果可能或者不可以直接解释它,怎么样? Google对此并不友善。 谢谢!
Xamarin 3.0引入了Xamarin.Forms ,这是一个强大的UI抽象,允许开发人员轻松创build可在Android,iOS和Windows Phone上共享的用户界面。 它看起来非常强大,但我面临一些困难,创buildUI为Xamarin.Forms带有超过40个控件。 如果没有智能感知或简约devise师,在官方文档中search所有属性或浏览c#代码是相当不利的。 默认的Xaml teamplate是这样的,显然不需要任何帮助就可以添加新的控件。 <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="App1.Class1"> <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" /> </ContentPage> 那么有没有机会在Xaml内部具有智能感知或者使用Xamldevise师?