public void MapType_OverridingSelectionOfConventionSelectedConstructor() { var builder = new ConventionBuilder(); builder. ForTypesDerivedFrom <IFoo>(). Export <IFoo>(); builder.ForType <FooImplWithConstructors>() .SelectConstructor(cis => cis.Single(c => c.GetParameters().Length == 1)); var fooImplWithConstructors = typeof(FooImplWithConstructors).GetTypeInfo(); var constructor1 = fooImplWithConstructors.DeclaredConstructors.Where(c => c.GetParameters().Length == 0).Single(); var constructor2 = fooImplWithConstructors.DeclaredConstructors.Where(c => c.GetParameters().Length == 1).Single(); var constructor3 = fooImplWithConstructors.DeclaredConstructors.Where(c => c.GetParameters().Length == 2).Single(); // necessary as BuildConventionConstructorAttributes is only called for type level query for attributes Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor1).Count()); Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor3).Count()); var ci = constructor2; var attrs = builder.GetCustomAttributes(typeof(FooImplWithConstructors), ci); Assert.Equal(1, attrs.Count()); Assert.Equal(typeof(ImportingConstructorAttribute), attrs.FirstOrDefault().GetType()); }
public void ExportInterfaceWithTypeOf1() { var builder = new ConventionBuilder(); builder.ForType<FooImpl>().Export<IFoo>(); var exports = builder.GetCustomAttributes(typeof(FooImpl), typeof(FooImpl).GetTypeInfo()).Where<Attribute>(e => e is ExportAttribute).Cast<ExportAttribute>(); Assert.Equal(1, exports.Count()); Assert.Equal(exports.First().ContractType, typeof(IFoo)); }
public void ExportInterfaceWithTypeOf1() { var builder = new ConventionBuilder(); builder.ForType <FooImpl>().Export <IFoo>(); Collections.Generic.IEnumerable <ExportAttribute> exports = builder.GetCustomAttributes(typeof(FooImpl), typeof(FooImpl).GetTypeInfo()).Where <Attribute>(e => e is ExportAttribute).Cast <ExportAttribute>(); Assert.Equal(1, exports.Count()); Assert.Equal(exports.First().ContractType, typeof(IFoo)); }
public void MapType_ConventionSelectedConstructor() { var builder = new ConventionBuilder(); builder. ForTypesDerivedFrom<IFoo>(). Export<IFoo>(); var fooImplWithConstructorsTypeInfo = typeof(FooImplWithConstructors).GetTypeInfo(); // necessary as BuildConventionConstructorAttributes is only called for type level query for attributes var constructor1 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 0).Single(); var constructor2 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 1).Single(); var constructor3 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 2).Single(); Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor1).Count()); Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor2).Count()); var ci = constructor3; var attrs = builder.GetCustomAttributes(typeof(FooImplWithConstructors), ci); Assert.Equal(1, attrs.Count()); Assert.Equal(typeof(ImportingConstructorAttribute), attrs.FirstOrDefault().GetType()); }
public void MapType_ConventionSelectedConstructor() { var builder = new ConventionBuilder(); builder. ForTypesDerivedFrom <IFoo>(). Export <IFoo>(); TypeInfo fooImplWithConstructorsTypeInfo = typeof(FooImplWithConstructors).GetTypeInfo(); // necessary as BuildConventionConstructorAttributes is only called for type level query for attributes ConstructorInfo constructor1 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 0).Single(); ConstructorInfo constructor2 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 1).Single(); ConstructorInfo constructor3 = fooImplWithConstructorsTypeInfo.DeclaredConstructors.Where(c => c.GetParameters().Length == 2).Single(); Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor1).Count()); Assert.Equal(0, builder.GetCustomAttributes(typeof(FooImplWithConstructors), constructor2).Count()); ConstructorInfo ci = constructor3; IEnumerable <Attribute> attrs = builder.GetCustomAttributes(typeof(FooImplWithConstructors), ci); Assert.Equal(1, attrs.Count()); Assert.Equal(typeof(ImportingConstructorAttribute), attrs.FirstOrDefault().GetType()); }