public void AcceptsWithImportIsSingleArgumentFunc() { var types = new List <TypeDefinition>(); var createTypeIdentity = IdentityFactory(types, new Dictionary <Type, TypeIdentity>()); var repository = new Mock <ISatisfyPluginRequests>(); { repository.Setup(r => r.IdentityByName(It.IsAny <string>())) .Returns <string>(n => types.Where(t => t.Identity.AssemblyQualifiedName.Equals(n)).Select(t => t.Identity).FirstOrDefault()); repository.Setup(r => r.TypeByIdentity(It.IsAny <TypeIdentity>())) .Returns <TypeIdentity>(id => types.Where(t => t.Identity.Equals(id)).FirstOrDefault()); repository.Setup(r => r.IsSubTypeOf(It.IsAny <TypeIdentity>(), It.IsAny <TypeIdentity>())) .Returns <TypeIdentity, TypeIdentity>((parent, child) => IsSubTypeOf(types, parent, child)); } var importEngine = new PartImportEngine(repository.Object); var importDefinition = PropertyBasedImportDefinition.CreateDefinition( "A", createTypeIdentity(typeof(Func <int>)), ImportCardinality.ExactlyOne, true, CreationPolicy.NonShared, typeof(string).GetProperty("Length"), createTypeIdentity); var exportDefinition = PropertyBasedExportDefinition.CreateDefinition( "A", typeof(string).GetProperty("Length"), createTypeIdentity); Assert.IsTrue(importEngine.Accepts(importDefinition, exportDefinition)); }
private static SerializableExportDefinition CreatePropertyExport( ExportDefinition export, LazyMemberInfo memberInfo, Func <Type, TypeIdentity> identityGenerator) { // this is really ugly because we assume that the underlying methods for a property are named as: // get_PROPERTYNAME and set_PROPERTYNAME. In this case we assume that exports always // have a get method. var getMember = memberInfo.GetAccessors().First(m => m.Name.Contains("get_")); var name = getMember.Name.Substring("get_".Length); var property = getMember.DeclaringType.GetProperty(name); return(PropertyBasedExportDefinition.CreateDefinition( export.ContractName, property, identityGenerator)); }
private static IEnumerable <PartDefinition> CreatePluginTypes() { var plugins = new List <PartDefinition> { new PartDefinition { Identity = TypeIdentity.CreateDefinition(typeof(ActionOnMethod)), Exports = new List <SerializableExportDefinition> { TypeBasedExportDefinition.CreateDefinition("ActionExport", typeof(ActionOnMethod)) }, Imports = new List <SerializableImportDefinition>(), Actions = new List <ScheduleActionDefinition> { ScheduleActionDefinition.CreateDefinition( "ActionMethod", typeof(ActionOnMethod).GetMethod("ActionMethod")) }, Conditions = new List <ScheduleConditionDefinition>(), }, new PartDefinition { Identity = TypeIdentity.CreateDefinition(typeof(ConditionOnMethod)), Exports = new List <SerializableExportDefinition> { TypeBasedExportDefinition.CreateDefinition("ConditionOnMethodExport", typeof(ConditionOnMethod)) }, Imports = new List <SerializableImportDefinition>(), Actions = new List <ScheduleActionDefinition>(), Conditions = new List <ScheduleConditionDefinition> { MethodBasedScheduleConditionDefinition.CreateDefinition( "OnMethod", typeof(ConditionOnMethod).GetMethod("ConditionMethod")) }, }, new PartDefinition { Identity = TypeIdentity.CreateDefinition(typeof(ConditionOnProperty)), Exports = new List <SerializableExportDefinition> { TypeBasedExportDefinition.CreateDefinition("ConditionOnPropertyExport", typeof(ConditionOnProperty)) }, Imports = new List <SerializableImportDefinition>(), Actions = new List <ScheduleActionDefinition>(), Conditions = new List <ScheduleConditionDefinition> { PropertyBasedScheduleConditionDefinition.CreateDefinition( "OnProperty", typeof(ConditionOnProperty).GetProperty("ConditionProperty")) }, }, new PartDefinition { Identity = TypeIdentity.CreateDefinition(typeof(ExportOnProperty)), Exports = new List <SerializableExportDefinition> { PropertyBasedExportDefinition.CreateDefinition( typeof(IExportingInterface).FullName, typeof(ExportOnProperty).GetProperty("ExportingProperty")) }, Imports = new List <SerializableImportDefinition>(), Actions = new List <ScheduleActionDefinition>(), Conditions = new List <ScheduleConditionDefinition>(), }, new PartDefinition { Identity = TypeIdentity.CreateDefinition(typeof(ImportOnProperty)), Exports = new List <SerializableExportDefinition> { TypeBasedExportDefinition.CreateDefinition(typeof(ImportOnProperty).FullName, typeof(ImportOnProperty)) }, Imports = new List <SerializableImportDefinition> { PropertyBasedImportDefinition.CreateDefinition( typeof(IExportingInterface).FullName, TypeIdentity.CreateDefinition(typeof(IExportingInterface)), ImportCardinality.ExactlyOne, false, CreationPolicy.Shared, typeof(ImportOnProperty).GetProperty("ImportingProperty")) }, Actions = new List <ScheduleActionDefinition>(), Conditions = new List <ScheduleConditionDefinition>(), } }; return(plugins); }