├── .BuildProject ├── .gitattributes ├── .gitignore ├── Apache-2.0.licenseheader ├── Build-OneClick.cmd ├── Build.cmd ├── Build ├── Build.csproj ├── Build.licenseheader ├── Customizations │ ├── Configuration.props │ ├── Local │ │ ├── Configuration.props │ │ └── Configuration.targets │ ├── Overrides.targets │ ├── Projects.props │ ├── Properties.props │ ├── ReleaseProcessScript.config │ ├── Server │ │ └── Configuration.targets │ └── Version.props ├── How-to-Release.md ├── Remotion.Local.build ├── Remotion.Server.build ├── Remotion.build ├── app.config ├── packages.config └── teamcity.properties ├── Core.UnitTests ├── App_Packages │ ├── Remotion.Development.BooleanObjectMother.Sources.1.25.23 │ │ ├── BooleanObjectMother.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.Dev.Sources.1.15.33.0 │ │ ├── Dev.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.EnumerableExtensions.Sources.1.17.6.0 │ │ ├── EnumerableExtensions.cs │ │ ├── OneTimeEnumerable.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.Moq.Decoration.Sources.1.21.8 │ │ ├── DecoratorTestHelper.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0 │ │ ├── Apache-2.0.licenseheader │ │ └── NMIFRUtility.cs │ ├── Remotion.Development.ObjectExtensions.Sources.1.17.6.0 │ │ ├── ObjectExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0 │ │ ├── PrivateInvoke.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0 │ │ ├── ReflectionObjectMother.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0 │ │ ├── EnumerableExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0 │ │ ├── EnumerableUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0 │ │ ├── AssertionConditionAttribute.cs │ │ ├── AssertionConditionType.cs │ │ ├── AssertionMethodAttribute.cs │ │ ├── BaseTypeRequiredAttribute.cs │ │ ├── CanBeNullAttribute.cs │ │ ├── CannotApplyEqualityOperatorAttribute.cs │ │ ├── ContractAnnotationAttribute.cs │ │ ├── ImplicitUseKindFlags.cs │ │ ├── ImplicitUseTargetFlags.cs │ │ ├── InstantHandleAttribute.cs │ │ ├── InvokerParameterNameAttribute.cs │ │ ├── LinqTunnelAttribute.cs │ │ ├── LocalizationRequiredAttribute.cs │ │ ├── MeansImplicitUseAttribute.cs │ │ ├── NoEnumerationAttribute.cs │ │ ├── NotNullAttribute.cs │ │ ├── NotifyPropertyChangedInvocatorAttribute.cs │ │ ├── PathReferenceAttribute.cs │ │ ├── PublicAPIAttribute.cs │ │ ├── PureAttribute.cs │ │ ├── ReSharperAnnotations Apache-2.0.licenseheader │ │ ├── StringFormatMethodAttribute.cs │ │ ├── TerminatesProgramAttribute.cs │ │ └── UsedImplicitlyAttribute.cs │ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0 │ │ ├── ArgumentUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0 │ │ ├── Assertion.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0 │ │ ├── ExceptionUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.FileUtility.Sources.1.15.33.0 │ │ ├── FileUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0 │ │ ├── MemberInfoEqualityComparer.cs │ │ └── SharedSource Apache-2.0.licenseheader │ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0 │ │ ├── NullableTypeUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader ├── Caching │ ├── AssembledTypeIDTest.cs │ ├── ConstructionKeyTest.cs │ ├── ConstructorCallCacheTest.cs │ ├── ConstructorForAssembledTypeCacheKeyTest.cs │ ├── ConstructorForAssembledTypeCacheTest.cs │ └── TypeCacheTests │ │ ├── GetOrCreateAdditionalType_TypeCacheTest.cs │ │ ├── GetOrCreateType_TypeCacheTest.cs │ │ └── LoadTypes_TypeCacheTest.cs ├── CodeGeneration │ ├── AssembledTypeIdentifierProviderTest.cs │ ├── AssemblyContextPoolTest.cs │ ├── AssemblyContextTest.cs │ ├── MutableTypeBatchCodeGeneratorTest.cs │ ├── ReflectionEmit │ │ ├── Abstractions │ │ │ ├── BuilderAdapterBaseTest.cs │ │ │ ├── BuilderDecoratorBaseTest.cs │ │ │ ├── ConstructorBuilderDecoratorTest.cs │ │ │ ├── EventBuilderDecoratorTest.cs │ │ │ ├── FieldBuilderDecoratorTest.cs │ │ │ ├── GenericTypeParameterBuilderDecoratorTest.cs │ │ │ ├── MethodBaseBuilderDecoratorBaseTest.cs │ │ │ ├── MethodBuilderDecoratorTest.cs │ │ │ ├── PropertyBuilderDecoratorTest.cs │ │ │ └── TypeBuilderDecoratorTest.cs │ │ ├── CodeGenerationContextObjectMother.cs │ │ ├── CodeGenerationContextTest.cs │ │ ├── DeferredActionManagerTest.cs │ │ ├── EmittableOperandProviderTest.cs │ │ ├── Expressions │ │ │ ├── BoxAndCastExpressionTest.cs │ │ │ ├── CodeGenerationExpressionBaseTest.cs │ │ │ ├── UnaryExpressionBaseTest.cs │ │ │ ├── UnboxExpressionTest.cs │ │ │ └── UnemittableExpressionVisitorTest.cs │ │ ├── InitializationBuilderTest.cs │ │ ├── LambdaCompilation │ │ │ ├── CodeGenerationExpressionEmitterTest.cs │ │ │ ├── DelegateTypePlaceholderTest.cs │ │ │ ├── ILGeneratorDecoratorFactoryTest.cs │ │ │ ├── ILGeneratorDecoratorTest.cs │ │ │ ├── ILGeneratorObjectMother.cs │ │ │ └── OffsetTrackingILGeneratorFactoryTest.cs │ │ ├── MemberEmitterFactoryTest.cs │ │ ├── MemberEmitterTest.cs │ │ ├── MethodTrampolineProviderTest.cs │ │ ├── ModuleBuilderFactoryTest.cs │ │ ├── MutableNestedTypeCodeGeneratorTest.cs │ │ ├── MutableTypeCodeGeneratorFactoryTest.cs │ │ ├── MutableTypeCodeGeneratorTest.cs │ │ ├── OtherKey.snk │ │ ├── ReflectionEmitObjectMother.cs │ │ └── StrongNameCheckingEmittableOperandProviderDecoratorTest.cs │ └── ThreadLocalAssemblyContextPoolDecoratorTest.cs ├── Core.UnitTests.csproj ├── Core.UnitTests.csproj.DotSettings ├── Expressions │ ├── DelegateBasedExpressionVisitorTest.cs │ ├── ExpressionExtensionsTest.cs │ ├── ExpressionTest.cs │ ├── ExpressionTestHelper.cs │ ├── ExpressionTreeComparer.cs │ ├── NewDelegateExpressionTest.cs │ ├── PrimitiveTypePipeExpressionBaseTest.cs │ ├── ReflectionAdapters │ │ ├── ConstructorAsMethodInfoAdapterTest.cs │ │ └── NonVirtualCallMethodInfoAdapterTest.cs │ ├── ReplacingExpressionVisitorTest.cs │ └── ThisExpressionTest.cs ├── Implementation │ ├── CodeManagerTest.cs │ ├── ConstructorFinderTest.cs │ ├── DefaultPipelineRegistryTest.cs │ ├── DynamicParamListTest.cs │ ├── ParamListImplementationTest.cs │ ├── ParamListTest.cs │ ├── PipelineRegistryTest.cs │ ├── PipelineSettingsTest.cs │ ├── PipelineTest.cs │ ├── ReflectionServiceTest.cs │ └── TestDomain │ │ └── ClassWithManyConstructorArguments.cs ├── Moq │ └── MoqExtensions.cs ├── MutableReflection │ ├── BodyBuilding │ │ ├── BodyContextBaseTest.cs │ │ ├── BodyContextUtilityTest.cs │ │ ├── BodyProviderUtilityTest.cs │ │ ├── ConstructorBodyContextBaseTest.cs │ │ ├── ConstructorBodyModificationContextTest.cs │ │ ├── ExpressionTypeUtilityTest.cs │ │ ├── MethodBaseBodyContextBaseTest.cs │ │ ├── MethodBodyContextBaseObjectMother.cs │ │ ├── MethodBodyContextBaseTest.cs │ │ ├── MethodBodyModificationContextTest.cs │ │ ├── TestableBodyContextBase.cs │ │ ├── TestableConstructorBodyContextBase.cs │ │ ├── TestableMethodBaseBodyContextBase.cs │ │ └── TestableMethodBodyContextBase.cs │ ├── CustomAttributeDataExtensionsTest.cs │ ├── CustomAttributeDeclarationTest.cs │ ├── CustomAttributeNamedArgumentAdapterTest.cs │ ├── GenericParameterDeclarationTest.cs │ ├── Generics │ │ ├── ConstructorOnTypeInstantiationTest.cs │ │ ├── EventOnTypeInstantiationTest.cs │ │ ├── FieldOnTypeInstantiationTest.cs │ │ ├── GenericParameterDefaultConstructorTest.cs │ │ ├── MemberParameterOnInstantiationTest.cs │ │ ├── MethodInstantiationInfoTest.cs │ │ ├── MethodInstantiationObjectMother.cs │ │ ├── MethodInstantiationTest.cs │ │ ├── MethodOnTypeInstantiationTest.cs │ │ ├── MutableGenericParameterTest.cs │ │ ├── PropertyOnTypeInstantiationTest.cs │ │ ├── TypeInstantiationContextTest.cs │ │ ├── TypeInstantiationInfoTest.cs │ │ └── TypeInstantiationTest.cs │ ├── Implementation │ │ ├── ArrayTypeBaseTest.cs │ │ ├── BindingFlagsEvaluatorTest.cs │ │ ├── ByRefTypeTest.cs │ │ ├── ConstructorOnCustomTypeTest.cs │ │ ├── CustomAttributeContainerTest.cs │ │ ├── CustomAttributeDataAdapterTest.cs │ │ ├── CustomAttributeDataCacheKeyTest.cs │ │ ├── CustomAttributeDataRetrieverTest.cs │ │ ├── CustomAttributeFinderTest.cs │ │ ├── CustomAttributeTypedArgumentUtilityTest.cs │ │ ├── CustomConstructorInfoTest.cs │ │ ├── CustomEventInfoTest.cs │ │ ├── CustomFieldInfoTest.cs │ │ ├── CustomMethodInfoTest.cs │ │ ├── CustomParameterInfoTest.cs │ │ ├── CustomPropertyInfoTest.cs │ │ ├── CustomTypeTest.cs │ │ ├── EnumFlagsExtensionsTest.cs │ │ ├── GenericArgumentUtilityTest.cs │ │ ├── InstanceInitializationTest.cs │ │ ├── InterfaceMappingComputerTest.cs │ │ ├── MemberFactory │ │ │ ├── ConstructorFactoryTest.cs │ │ │ ├── EventFactoryTest.cs │ │ │ ├── FieldFactoryTest.cs │ │ │ ├── InitializationFactoryTest.cs │ │ │ ├── MethodFactoryTest.cs │ │ │ ├── MethodOverrideFactoryTest.cs │ │ │ ├── NestedTypeFactoryTest.cs │ │ │ └── PropertyFactoryTest.cs │ │ ├── MemberImplementationUtilityTest.cs │ │ ├── MemberSelectorTest.cs │ │ ├── MethodBaseDefinitionCacheTest.cs │ │ ├── MethodOnCustomTypeTest.cs │ │ ├── MethodOverrideUtilityTest.cs │ │ ├── MultiDimensionalArrayTypeTest.cs │ │ ├── MutableTypeFactoryTest.cs │ │ ├── ParameterOnCustomMemberTest.cs │ │ ├── PropertyParameterInfoWrapperTest.cs │ │ ├── ProviderUtilityTest.cs │ │ ├── ProxyTypeModificationTrackerTest.cs │ │ ├── RelatedEventFinderTest.cs │ │ ├── RelatedMethodFinderTest.cs │ │ ├── RelatedPropertyFinderTest.cs │ │ ├── SignatureDebugStringGeneratorTest.cs │ │ ├── SubclassFilterUtilityTest.cs │ │ └── VectorTypeTest.cs │ ├── MemberSignatures │ │ ├── EventSignatureTest.cs │ │ ├── FieldSignatureTest.cs │ │ ├── MemberNameAndSignatureEqualityComparerTest.cs │ │ ├── MemberSignatureEqualityComparerTest.cs │ │ ├── MemberSignatureProviderTest.cs │ │ ├── MethodSignatureIntegrationTest.cs │ │ ├── MethodSignatureStringBuilderHelperForGenericMethodTest.cs │ │ ├── MethodSignatureStringBuilderHelperTest.cs │ │ ├── MethodSignatureTest.cs │ │ ├── NestedTypeSignatureTest.cs │ │ ├── PropertySignatureTest.cs │ │ └── TestDomain │ │ │ ├── ClassForSignatureComparisons.cs │ │ │ └── ClassForSignatureComparisons2.cs │ ├── MethodAttributesExtensionsTest.cs │ ├── MethodDeclarationTest.cs │ ├── MethodInfoExtensionsTest.cs │ ├── MutableConstructorInfoTest.cs │ ├── MutableConstructorInfoTestHelper.cs │ ├── MutableEventInfoTest.cs │ ├── MutableFieldInfoTest.cs │ ├── MutableFieldInfoTestHelper.cs │ ├── MutableMethodInfoTest.cs │ ├── MutableMethodInfoTestHelper.cs │ ├── MutableParameterInfoTest.cs │ ├── MutablePropertyInfoTest.cs │ ├── MutableTypeTest.cs │ ├── MutableTypeTestExtensions.cs │ ├── NamedArgumentDeclarationTest.cs │ ├── ParameterDeclarationTest.cs │ ├── TypeExtensionsTest.cs │ ├── TypePipeCustomAttributeDataWithInheritanceTest.cs │ └── UnsupportedMemberTestHelper.cs ├── NUnit │ └── NUnitExtensions.cs ├── Properties │ └── AssemblyInfo.cs ├── StrongNaming │ ├── AssemblyAnalyzerTest.cs │ └── TypeAnalyzerTest.cs └── TypeAssembly │ ├── GeneratedTypesContextTest.cs │ ├── Implementation │ ├── ConstructorDelegateFactoryTest.cs │ ├── DependentTypeSorterTest.cs │ ├── NullTypeIdentifierProviderTest.cs │ ├── TypeAssemblerTest.cs │ ├── TypeAssemblyContextBaseTest.cs │ └── TypeAssemblyResultTest.cs │ ├── LoadedTypesContextTest.cs │ ├── ParticipantStateTest.cs │ └── TypeAssemblyContextExtensionsTest.cs ├── Core ├── App_Packages │ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0 │ │ ├── EnumerableExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0 │ │ ├── EnumerableUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0 │ │ ├── AssertionConditionAttribute.cs │ │ ├── AssertionConditionType.cs │ │ ├── AssertionMethodAttribute.cs │ │ ├── BaseTypeRequiredAttribute.cs │ │ ├── CanBeNullAttribute.cs │ │ ├── CannotApplyEqualityOperatorAttribute.cs │ │ ├── ContractAnnotationAttribute.cs │ │ ├── ImplicitUseKindFlags.cs │ │ ├── ImplicitUseTargetFlags.cs │ │ ├── InstantHandleAttribute.cs │ │ ├── InvokerParameterNameAttribute.cs │ │ ├── LinqTunnelAttribute.cs │ │ ├── LocalizationRequiredAttribute.cs │ │ ├── MeansImplicitUseAttribute.cs │ │ ├── NoEnumerationAttribute.cs │ │ ├── NotNullAttribute.cs │ │ ├── NotifyPropertyChangedInvocatorAttribute.cs │ │ ├── PathReferenceAttribute.cs │ │ ├── PublicAPIAttribute.cs │ │ ├── PureAttribute.cs │ │ ├── ReSharperAnnotations Apache-2.0.licenseheader │ │ ├── StringFormatMethodAttribute.cs │ │ ├── TerminatesProgramAttribute.cs │ │ └── UsedImplicitlyAttribute.cs │ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0 │ │ ├── ArgumentUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0 │ │ ├── Assertion.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.AttributeUtility.Sources.1.17.6.0 │ │ ├── AttributeUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.EqualityUtility.Sources.1.15.23.0 │ │ ├── EqualityUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0 │ │ ├── ExceptionUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0 │ │ ├── MemberInfoEqualityComparer.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.MemberInfoFromExpressionUtility.Sources.1.17.6.0 │ │ ├── MemberInfoFromExpressionUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0 │ │ ├── NullableTypeUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader ├── Caching │ ├── AssembledTypeID.cs │ ├── ConstructionKey.cs │ ├── ConstructorCallCache.cs │ ├── ConstructorForAssembledTypeCache.cs │ ├── ConstructorForAssembledTypeCacheKey.cs │ ├── IConstructorCallCache.cs │ ├── IConstructorForAssembledTypeCache.cs │ ├── ITypeCache.cs │ ├── ITypeIdentifierProvider.cs │ └── TypeCache.cs ├── CodeGeneration │ ├── AssemblyContext.cs │ ├── AssemblyContextPool.cs │ ├── ConstructorDelegateFactory.cs │ ├── DependentTypeSorter.cs │ ├── IAssemblyContextPool.cs │ ├── IConstructorDelegateFactory.cs │ ├── IDependentTypeSorter.cs │ ├── IGeneratedCodeFlusher.cs │ ├── IMutableTypeBatchCodeGenerator.cs │ ├── IMutableTypeCodeGenerator.cs │ ├── IMutableTypeCodeGeneratorFactory.cs │ ├── MutableTypeBatchCodeGenerator.cs │ ├── ReflectionEmit │ │ ├── Abstractions │ │ │ ├── AssemblyBuilderAdapter.cs │ │ │ ├── BuilderAdapterBase.cs │ │ │ ├── BuilderDecoratorBase.cs │ │ │ ├── ConstructorBuilderAdapter.cs │ │ │ ├── ConstructorBuilderDecorator.cs │ │ │ ├── EventBuilderAdapter.cs │ │ │ ├── EventBuilderDecorator.cs │ │ │ ├── FieldBuilderAdapter.cs │ │ │ ├── FieldBuilderDecorator.cs │ │ │ ├── GenericTypeParameterBuilderAdapter.cs │ │ │ ├── GenericTypeParameterBuilderDecorator.cs │ │ │ ├── IAssemblyBuilder.cs │ │ │ ├── IConstructorBuilder.cs │ │ │ ├── ICustomAttributeTargetBuilder.cs │ │ │ ├── IEventBuilder.cs │ │ │ ├── IFieldBuilder.cs │ │ │ ├── IGenericTypeParameterBuilder.cs │ │ │ ├── IMethodBaseBuilder.cs │ │ │ ├── IMethodBuilder.cs │ │ │ ├── IModuleBuilder.cs │ │ │ ├── IParameterBuilder.cs │ │ │ ├── IPropertyBuilder.cs │ │ │ ├── ITypeBuilder.cs │ │ │ ├── MethodBaseBuilderDecoratorBase.cs │ │ │ ├── MethodBuilderAdapter.cs │ │ │ ├── MethodBuilderDecorator.cs │ │ │ ├── ModuleBuilderAdapter.cs │ │ │ ├── ParameterBuilderAdapter.cs │ │ │ ├── ParameterBuilderDecorator.cs │ │ │ ├── PropertyBuilderAdapter.cs │ │ │ ├── PropertyBuilderDecorator.cs │ │ │ ├── TypeBuilderAdapter.cs │ │ │ └── TypeBuilderDecorator.cs │ │ ├── CodeGenerationContext.cs │ │ ├── DeferredActionManager.cs │ │ ├── EmittableOperandProvider.cs │ │ ├── ExpressionPreparer.cs │ │ ├── Expressions │ │ │ ├── BoxAndCastExpression.cs │ │ │ ├── CodeGenerationExpressionBase.cs │ │ │ ├── ICodeGenerationExpression.cs │ │ │ ├── ICodeGenerationExpressionVisitor.cs │ │ │ ├── UnaryExpressionBase.cs │ │ │ ├── UnboxExpression.cs │ │ │ └── UnemittableExpressionVisitor.cs │ │ ├── IDelegateProvider.cs │ │ ├── IEmittableOperandProvider.cs │ │ ├── IExpressionPreparer.cs │ │ ├── IInitializationBuilder.cs │ │ ├── IMemberEmitter.cs │ │ ├── IMemberEmitterFactory.cs │ │ ├── IMethodTrampolineProvider.cs │ │ ├── IModuleBuilderFactory.cs │ │ ├── IMutableNestedTypeCodeGeneratorFactory.cs │ │ ├── IReflectionEmitCodeGenerator.cs │ │ ├── InitializationBuilder.cs │ │ ├── LambdaCompilation │ │ │ ├── CodeGenerationExpressionEmitter.cs │ │ │ ├── ConstructorBuilderForLambdaCompiler.cs │ │ │ ├── DelegateProvider.cs │ │ │ ├── DelegateTypePlaceholder.cs │ │ │ ├── IILGenerator.cs │ │ │ ├── IILGeneratorFactory.cs │ │ │ ├── ILGeneratorDecorator.cs │ │ │ ├── ILGeneratorDecoratorFactory.cs │ │ │ ├── IMethodBuilderForLambdaCompiler.cs │ │ │ ├── MethodBuilderForLambdaCompiler.cs │ │ │ ├── OffsetTrackingILGeneratorAdapter.cs │ │ │ └── OffsetTrackingILGeneratorFactory.cs │ │ ├── MemberEmitter.cs │ │ ├── MemberEmitterFactory.cs │ │ ├── MethodTrampolineProvider.cs │ │ ├── ModuleBuilderFactory.cs │ │ ├── MutableNestedTypeCodeGenerator.cs │ │ ├── MutableNestedTypeCodeGeneratorFactory.cs │ │ ├── MutableTypeCodeGenerator.cs │ │ ├── MutableTypeCodeGeneratorFactory.cs │ │ ├── NullDebugInfoGenerator.cs │ │ ├── NullExpressionPreparer.cs │ │ ├── ReflectionEmitCodeGenerator.cs │ │ └── StrongNameCheckingEmittableOperandProviderDecorator.cs │ └── ThreadLocalAssemblyContextPoolDecorator.cs ├── Core.csproj ├── Dlr │ ├── Actions │ │ ├── BinaryOperationBinder.cs │ │ ├── BindingRestrictions.cs │ │ ├── CallInfo.cs │ │ ├── CallSite.cs │ │ ├── CallSiteBinder.cs │ │ ├── CallSiteHelpers.cs │ │ ├── CallSiteOps.cs │ │ ├── ConvertBinder.cs │ │ ├── CreateInstanceBinder.cs │ │ ├── DeleteIndexBinder.cs │ │ ├── DeleteMemberBinder.cs │ │ ├── DynamicMetaObject.cs │ │ ├── DynamicMetaObjectBinder.cs │ │ ├── DynamicObject.cs │ │ ├── ExpandoClass.cs │ │ ├── ExpandoObject.cs │ │ ├── GetIndexBinder.cs │ │ ├── GetMemberBinder.cs │ │ ├── IDynamicMetaObjectProvider.cs │ │ ├── IInvokeOnGetBinder.cs │ │ ├── InvokeBinder.cs │ │ ├── InvokeMemberBinder.cs │ │ ├── RuleCache.cs │ │ ├── SetIndexBinder.cs │ │ ├── SetMemberBinder.cs │ │ ├── UnaryOperationBinder.cs │ │ └── UpdateDelegates.Generated.cs │ ├── Ast │ │ ├── BinaryExpression.cs │ │ ├── BlockExpression.cs │ │ ├── CatchBlock.cs │ │ ├── ConditionalExpression.cs │ │ ├── ConstantExpression.cs │ │ ├── DebugInfoExpression.cs │ │ ├── DebugViewWriter.cs │ │ ├── DefaultExpression.cs │ │ ├── DynamicExpression.cs │ │ ├── ElementInit.cs │ │ ├── Expression.DebuggerProxy.cs │ │ ├── Expression.cs │ │ ├── ExpressionStringBuilder.cs │ │ ├── ExpressionType.cs │ │ ├── ExpressionVisitor.cs │ │ ├── GotoExpression.cs │ │ ├── IArgumentProvider.cs │ │ ├── IndexExpression.cs │ │ ├── InvocationExpression.cs │ │ ├── LabelExpression.cs │ │ ├── LabelTarget.cs │ │ ├── LambdaExpression.TypePipe.cs │ │ ├── LambdaExpression.cs │ │ ├── ListArgumentProvider.cs │ │ ├── ListInitExpression.cs │ │ ├── LoopExpression.cs │ │ ├── MemberAssignment.cs │ │ ├── MemberBinding.cs │ │ ├── MemberExpression.cs │ │ ├── MemberInitExpression.cs │ │ ├── MemberListBinding.cs │ │ ├── MemberMemberBinding.cs │ │ ├── MethodCallExpression.cs │ │ ├── NewArrayExpression.cs │ │ ├── NewExpression.cs │ │ ├── ParameterExpression.cs │ │ ├── RuntimeVariablesExpression.cs │ │ ├── SwitchCase.cs │ │ ├── SwitchExpression.cs │ │ ├── SymbolDocumentInfo.cs │ │ ├── TryExpression.cs │ │ ├── TypeBinaryExpression.cs │ │ ├── TypeUtils.cs │ │ └── UnaryExpression.cs │ ├── Compiler │ │ ├── AnalyzedTree.cs │ │ ├── AssemblyGen.cs │ │ ├── BoundConstants.cs │ │ ├── Closure.cs │ │ ├── CompilerScope.Storage.cs │ │ ├── CompilerScope.cs │ │ ├── ConstantCheck.cs │ │ ├── DebugInfoGenerator.cs │ │ ├── DelegateHelpers.Generated.cs │ │ ├── DelegateHelpers.cs │ │ ├── ExpressionQuoter.cs │ │ ├── HoistedLocals.cs │ │ ├── ILGen.cs │ │ ├── KeyedQueue.cs │ │ ├── LabelInfo.cs │ │ ├── LambdaCompiler.Address.cs │ │ ├── LambdaCompiler.Binary.cs │ │ ├── LambdaCompiler.ControlFlow.cs │ │ ├── LambdaCompiler.Expressions.cs │ │ ├── LambdaCompiler.Generated.cs │ │ ├── LambdaCompiler.Lambda.cs │ │ ├── LambdaCompiler.Logical.cs │ │ ├── LambdaCompiler.Statements.cs │ │ ├── LambdaCompiler.Unary.cs │ │ ├── LambdaCompiler.cs │ │ ├── OffsetTrackingILGenerator.cs │ │ ├── RuntimeVariableList.cs │ │ ├── Set.cs │ │ ├── StackSpiller.Bindings.cs │ │ ├── StackSpiller.Generated.cs │ │ ├── StackSpiller.Temps.cs │ │ ├── StackSpiller.cs │ │ ├── SymbolDocumentGenerator.cs │ │ └── VariableBinder.cs │ ├── Preserve-Dlr.licenseheader │ └── Utils │ │ ├── Action.cs │ │ ├── CacheDict.cs │ │ ├── CollectionExtensions.cs │ │ ├── ContractUtils.cs │ │ ├── ExceptionFactory.Generated.cs │ │ ├── Function.cs │ │ ├── Helpers.cs │ │ ├── IRuntimeVariables.cs │ │ ├── ReadOnlyCollectionBuilder.cs │ │ ├── ReadOnlyDictionary.cs │ │ ├── ReferenceEqualityComparer.cs │ │ ├── TrueReadOnlyCollection.cs │ │ └── TypeExtensions.cs ├── Expressions │ ├── DelegateBasedExpressionVisitor.cs │ ├── Expression.cs │ ├── ExpressionExtensions.cs │ ├── IPrimitiveTypePipeExpression.cs │ ├── IPrimitiveTypePipeExpressionVisitor.cs │ ├── NewDelegateExpression.cs │ ├── PrimitiveTypePipeExpressionBase.cs │ ├── ReflectionAdapters │ │ ├── ConstructorAsMethodInfoAdapter.cs │ │ ├── DelegatingMethodInfoBase.cs │ │ └── NonVirtualCallMethodInfoAdapter.cs │ ├── ReplacingExpressionVisitor.cs │ └── ThisExpression.cs ├── IParticipant.cs ├── IPipeline.cs ├── IPipelineFactory.cs ├── IPipelineRegistry.cs ├── Implementation │ ├── CodeManager.cs │ ├── ConstructorFinder.cs │ ├── DefaultPipelineFactory.cs │ ├── DefaultPipelineRegistry.cs │ ├── DynamicParamList.cs │ ├── ICodeManager.cs │ ├── IConstructorFinder.cs │ ├── IInitializableObject.cs │ ├── IReflectionService.cs │ ├── InitializationSemantics.cs │ ├── ParamListImplementation.cs │ ├── ParamListImplementation.tt │ ├── Pipeline.cs │ ├── ReflectionService.cs │ ├── StandardDelegates.cs │ └── TypePipeAssemblyAttribute.cs ├── MutableReflection │ ├── BodyBuilding │ │ ├── BodyContextBase.cs │ │ ├── BodyContextUtility.cs │ │ ├── BodyProviderUtility.cs │ │ ├── ConstructorBodyContextBase.cs │ │ ├── ConstructorBodyCreationContext.cs │ │ ├── ConstructorBodyModificationContext.cs │ │ ├── ExpressionTypeUtility.cs │ │ ├── InitializationBodyContext.cs │ │ ├── MethodBaseBodyContextBase.cs │ │ ├── MethodBodyContextBase.cs │ │ ├── MethodBodyCreationContext.cs │ │ └── MethodBodyModificationContext.cs │ ├── BodyChangedEventArgs.cs │ ├── CustomAttributeDataExtensions.cs │ ├── CustomAttributeDeclaration.cs │ ├── ExplicitBaseDefinitionsAddedEventArgs.cs │ ├── GenericParameterContext.cs │ ├── GenericParameterDeclaration.cs │ ├── Generics │ │ ├── ConstructorOnTypeInstantiation.cs │ │ ├── EventOnTypeInstantiation.cs │ │ ├── FieldOnTypeInstantiation.cs │ │ ├── GenericParameterDefaultConstructor.cs │ │ ├── MemberParameterOnInstantiation.cs │ │ ├── MethodInstantiation.cs │ │ ├── MethodInstantiationInfo.cs │ │ ├── MethodOnTypeInstantiation.cs │ │ ├── MutableGenericParameter.cs │ │ ├── PropertyOnTypeInstantiation.cs │ │ ├── TypeInstantiation.cs │ │ ├── TypeInstantiationContext.cs │ │ └── TypeInstantiationInfo.cs │ ├── ICustomAttributeData.cs │ ├── ICustomAttributeDataProvider.cs │ ├── ICustomAttributeNamedArgument.cs │ ├── IMutableInfo.cs │ ├── IMutableMember.cs │ ├── IMutableMethodBase.cs │ ├── Implementation │ │ ├── ArrayTypeBase.cs │ │ ├── BindingFlagsEvaluator.cs │ │ ├── ByRefType.cs │ │ ├── ConstructorOnCustomType.cs │ │ ├── CustomAttributeContainer.cs │ │ ├── CustomAttributeDataAdapter.cs │ │ ├── CustomAttributeDataCacheKey.cs │ │ ├── CustomAttributeDataRetriever.cs │ │ ├── CustomAttributeFinder.cs │ │ ├── CustomAttributeNamedArgumentAdapter.cs │ │ ├── CustomAttributeTypedArgumentUtility.cs │ │ ├── CustomConstructorInfo.cs │ │ ├── CustomEventInfo.cs │ │ ├── CustomFieldInfo.cs │ │ ├── CustomMethodInfo.cs │ │ ├── CustomParameterInfo.cs │ │ ├── CustomPropertyInfo.cs │ │ ├── CustomType.cs │ │ ├── EnumFlagsExtensions.cs │ │ ├── GenericArgumentUtility.cs │ │ ├── IBindingFlagsEvaluator.cs │ │ ├── ICustomAttributeDataRetriever.cs │ │ ├── IInterfaceMappingComputer.cs │ │ ├── IMemberSelector.cs │ │ ├── IMutableTypeFactory.cs │ │ ├── IOwnCustomAttributeDataProvider.cs │ │ ├── IRelatedEventFinder.cs │ │ ├── IRelatedMethodFinder.cs │ │ ├── IRelatedPropertyFinder.cs │ │ ├── ITypeModificationTracker.cs │ │ ├── InstanceInitialization.cs │ │ ├── InterfaceMappingComputer.cs │ │ ├── MemberFactory │ │ │ ├── ConstructorFactory.cs │ │ │ ├── EventFactory.cs │ │ │ ├── FieldFactory.cs │ │ │ ├── IMethodFactory.cs │ │ │ ├── IMutableMemberFactory.cs │ │ │ ├── InitializationFactory.cs │ │ │ ├── MemberAttributesUtility.cs │ │ │ ├── MethodFactory.cs │ │ │ ├── MethodOverrideFactory.cs │ │ │ ├── MutableMemberFactory.cs │ │ │ ├── NestedTypeFactory.cs │ │ │ └── PropertyFactory.cs │ │ ├── MemberImplementationUtility.cs │ │ ├── MemberSelector.cs │ │ ├── MethodAttributesExtensions.cs │ │ ├── MethodBaseDefinitionCache.cs │ │ ├── MethodOnCustomType.cs │ │ ├── MethodOverrideUtility.cs │ │ ├── MultiDimensionalArrayType.cs │ │ ├── MutableTypeFactory.cs │ │ ├── ParameterOnCustomMember.cs │ │ ├── PropertyParameterInfoWrapper.cs │ │ ├── ProviderUtility.cs │ │ ├── ProxyKind.cs │ │ ├── ProxyTypeModificationTracker.cs │ │ ├── RelatedEventFinder.cs │ │ ├── RelatedMethodFinder.cs │ │ ├── RelatedPropertyFinder.cs │ │ ├── SignatureDebugStringGenerator.cs │ │ ├── SubclassFilterUtility.cs │ │ └── VectorType.cs │ ├── MemberSignatures │ │ ├── EventSignature.cs │ │ ├── FieldSignature.cs │ │ ├── IMemberSignature.cs │ │ ├── IMethodSignatureStringBuilderHelper.cs │ │ ├── MemberNameAndSignatureEqualityComparer.cs │ │ ├── MemberSignatureEqualityComparer.cs │ │ ├── MemberSignatureProvider.cs │ │ ├── MethodSignature.cs │ │ ├── MethodSignatureStringBuilderHelper.cs │ │ ├── MethodSignatureStringBuilderHelperForGenericMethod.cs │ │ ├── NestedTypeSignature.cs │ │ └── PropertySignature.cs │ ├── MethodDeclaration.cs │ ├── MethodInfoExtensions.cs │ ├── MutableConstructorInfo.cs │ ├── MutableEventInfo.cs │ ├── MutableFieldInfo.cs │ ├── MutableMethodInfo.cs │ ├── MutableParameterInfo.cs │ ├── MutablePropertyInfo.cs │ ├── MutableType.cs │ ├── MutableTypeExtensions.cs │ ├── NamedArgumentDeclaration.cs │ ├── ParameterDeclaration.cs │ ├── TypeExtensions.cs │ └── TypePipeCustomAttributeData.cs ├── ParamList.Partial.cs ├── ParamList.cs ├── ParamList.tt ├── PipelineFactoryExtensions.cs ├── PipelineRegistry.cs ├── PipelineSettings.cs ├── Properties │ └── AssemblyInfo.cs ├── SimpleParticipantBase.cs ├── StrongNaming │ ├── AssemblyAnalyzer.cs │ ├── FallbackKey.cs │ ├── FallbackKey.snk │ ├── IAssemblyAnalyzer.cs │ ├── ITypeAnalyzer.cs │ └── TypeAnalyzer.cs ├── TypeAssembly │ ├── GeneratedTypesContext.cs │ ├── IAdditionalTypeAssemblyContext.cs │ ├── IParticipantState.cs │ ├── IProxyTypeAssemblyContext.cs │ ├── ITypeAssemblyContext.cs │ ├── Implementation │ │ ├── AdditionalTypeAssemblyContext.cs │ │ ├── AssembledTypeAttribute.cs │ │ ├── AssembledTypeIdentifierProvider.cs │ │ ├── IAssembledTypeIdentifierProvider.cs │ │ ├── ITypeAssembler.cs │ │ ├── NullTypeIdentifierProvider.cs │ │ ├── ProxyTypeAssemblyContext.cs │ │ ├── TypeAssembler.cs │ │ ├── TypeAssemblyContextBase.cs │ │ └── TypeAssemblyResult.cs │ ├── LoadedProxy.cs │ ├── LoadedTypesContext.cs │ ├── ParticipantState.cs │ └── TypeAssemblyContextExtensions.cs └── doc │ └── include │ ├── GettingStartedWithTypePipe.aml │ └── Remotion.TypePipe.NamespaceDoc.xml ├── Development ├── App_Packages │ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0 │ │ ├── Apache-2.0.licenseheader │ │ └── NMIFRUtility.cs │ ├── Remotion.Development.PEVerifier.Sources.1.17.10.0 │ │ ├── PEVerifier.cs │ │ ├── PEVerifyException.cs │ │ ├── PEVerifyPathSources │ │ │ ├── CompoundPEVerifyPathSource.cs │ │ │ ├── DotNetSdk20PEVerifyPathSource.cs │ │ │ ├── FixedPEVerifyPathSource.cs │ │ │ ├── IPEVerifyPathSource.cs │ │ │ ├── PEVerifyVersion.cs │ │ │ ├── PotentialPEVerifyPathSourceBase.cs │ │ │ ├── WindowsSdk6PEVerifyPathSource.cs │ │ │ ├── WindowsSdk70aPEVerifyPathSource.cs │ │ │ ├── WindowsSdk71PEVerifyPathSource.cs │ │ │ ├── WindowsSdk80aPEVerifyPathSource.cs │ │ │ └── WindowsSdk81aPEVerifyPathSource.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0 │ │ ├── PrivateInvoke.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0 │ │ ├── ReflectionObjectMother.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0 │ │ ├── EnumerableExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0 │ │ ├── EnumerableUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.Maybe.Sources.1.17.6.0 │ │ ├── Maybe.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0 │ │ ├── AssertionConditionAttribute.cs │ │ ├── AssertionConditionType.cs │ │ ├── AssertionMethodAttribute.cs │ │ ├── BaseTypeRequiredAttribute.cs │ │ ├── CanBeNullAttribute.cs │ │ ├── CannotApplyEqualityOperatorAttribute.cs │ │ ├── ContractAnnotationAttribute.cs │ │ ├── ImplicitUseKindFlags.cs │ │ ├── ImplicitUseTargetFlags.cs │ │ ├── InstantHandleAttribute.cs │ │ ├── InvokerParameterNameAttribute.cs │ │ ├── LinqTunnelAttribute.cs │ │ ├── LocalizationRequiredAttribute.cs │ │ ├── MeansImplicitUseAttribute.cs │ │ ├── NoEnumerationAttribute.cs │ │ ├── NotNullAttribute.cs │ │ ├── NotifyPropertyChangedInvocatorAttribute.cs │ │ ├── PathReferenceAttribute.cs │ │ ├── PublicAPIAttribute.cs │ │ ├── PureAttribute.cs │ │ ├── ReSharperAnnotations Apache-2.0.licenseheader │ │ ├── StringFormatMethodAttribute.cs │ │ ├── TerminatesProgramAttribute.cs │ │ └── UsedImplicitlyAttribute.cs │ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0 │ │ ├── ArgumentUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0 │ │ ├── Assertion.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0 │ │ ├── ExceptionUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.FileUtility.Sources.1.15.33.0 │ │ ├── FileUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0 │ │ ├── MemberInfoEqualityComparer.cs │ │ └── SharedSource Apache-2.0.licenseheader │ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0 │ │ ├── NullableTypeUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader ├── AssemblyTrackingCodeManager.cs ├── AssemblyTrackingPipelineFactory.cs ├── Development.csproj ├── Properties │ └── AssemblyInfo.cs └── UnitTesting │ ├── Expressions │ ├── Assert.cs │ └── ExpressionTreeComparer.cs │ ├── ModifyingParticipant.cs │ ├── ObjectMothers │ ├── Caching │ │ └── AssembledTypeIDObjectMother.cs │ ├── CodeGeneration │ │ ├── LoadedTypesContextObjectMother.cs │ │ ├── ProxyTypeAssemblyContextObjectMother.cs │ │ ├── TestableTypeAssemblyContextBase.cs │ │ └── TypeAssemblyContextBaseObjectMother.cs │ ├── Expressions │ │ └── ExpressionTreeObjectMother.cs │ └── MutableReflection │ │ ├── CustomAttributeDeclarationObjectMother.cs │ │ ├── CustomAttributeReflectionObjectMother.cs │ │ ├── GenericParameterDeclarationObjectMother.cs │ │ ├── Generics │ │ ├── MethodInstantiationObjectMother.cs │ │ ├── MethodOnTypeInstantiationObjectMother.cs │ │ ├── MutableGenericParameterObjectMother.cs │ │ └── TypeInstantiationObjectMother.cs │ │ ├── Implementation │ │ ├── ArrayTypeBaseObjectMother.cs │ │ ├── ByRefTypeObjectMother.cs │ │ ├── ConstructorOnCustomTypeObjectMother.cs │ │ ├── CustomConstructorInfoObjectMother.cs │ │ ├── CustomEventInfoObjectMother.cs │ │ ├── CustomFieldInfoObjectMother.cs │ │ ├── CustomMethodInfoObjectMother.cs │ │ ├── CustomParameterInfoObjectMother.cs │ │ ├── CustomPropertyInfoObjectMother.cs │ │ ├── CustomTypeObjectMother.cs │ │ ├── CustomTypeTestExtensions.cs │ │ ├── MethodOnCustomTypeObjectMother.cs │ │ ├── MultiDimensionalArrayTypeObjectMother.cs │ │ ├── ParameterOnCustomMemberObjectMother.cs │ │ ├── TestableArrayTypeBase.cs │ │ ├── TestableCustomConstructorInfo.cs │ │ ├── TestableCustomEventInfo.cs │ │ ├── TestableCustomFieldInfo.cs │ │ ├── TestableCustomMethodInfo.cs │ │ ├── TestableCustomParameterInfo.cs │ │ ├── TestableCustomPropertyInfo.cs │ │ ├── TestableCustomType.cs │ │ └── VectorTypeObjectMother.cs │ │ ├── MutableConstructorInfoObjectMother.cs │ │ ├── MutableEventInfoObjectMother.cs │ │ ├── MutableFieldInfoObjectMother.cs │ │ ├── MutableMethodInfoObjectMother.cs │ │ ├── MutableParameterInfoObjectMother.cs │ │ ├── MutablePropertyInfoObjectMother.cs │ │ ├── MutableTypeObjectMother.cs │ │ └── ParameterDeclarationObjectMother.cs │ └── PipelineRegistryTestHelper.cs ├── Directory.Packages.props ├── Documentation ├── Documentation.csproj ├── Documentation_initial_pipeline_architecture.png ├── Home_Overview_new_Pipeline.png └── Properties │ └── AssemblyInfo.cs ├── Generate-Snk.cmd ├── How to build.txt ├── IntegrationTests ├── App_Packages │ ├── Remotion.Development.AssemblyLoader.Sources.1.17.6.0 │ │ ├── AssemblyLoader.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.BooleanObjectMother.Sources.1.25.23 │ │ ├── BooleanObjectMother.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.Dev.Sources.1.15.33.0 │ │ ├── Dev.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0 │ │ ├── Apache-2.0.licenseheader │ │ └── NMIFRUtility.cs │ ├── Remotion.Development.ObjectExtensions.Sources.1.17.6.0 │ │ ├── ObjectExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.PEVerifier.Sources.1.17.10.0 │ │ ├── PEVerifier.cs │ │ ├── PEVerifyException.cs │ │ ├── PEVerifyPathSources │ │ │ ├── CompoundPEVerifyPathSource.cs │ │ │ ├── DotNetSdk20PEVerifyPathSource.cs │ │ │ ├── FixedPEVerifyPathSource.cs │ │ │ ├── IPEVerifyPathSource.cs │ │ │ ├── PEVerifyVersion.cs │ │ │ ├── PotentialPEVerifyPathSourceBase.cs │ │ │ ├── WindowsSdk6PEVerifyPathSource.cs │ │ │ ├── WindowsSdk70aPEVerifyPathSource.cs │ │ │ ├── WindowsSdk71PEVerifyPathSource.cs │ │ │ ├── WindowsSdk80aPEVerifyPathSource.cs │ │ │ └── WindowsSdk81aPEVerifyPathSource.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0 │ │ ├── PrivateInvoke.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0 │ │ ├── ReflectionObjectMother.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0 │ │ ├── EnumerableExtensions.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0 │ │ ├── EnumerableUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.FunctionalProgramming.Maybe.Sources.1.17.6.0 │ │ ├── Maybe.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0 │ │ ├── AssertionConditionAttribute.cs │ │ ├── AssertionConditionType.cs │ │ ├── AssertionMethodAttribute.cs │ │ ├── BaseTypeRequiredAttribute.cs │ │ ├── CanBeNullAttribute.cs │ │ ├── CannotApplyEqualityOperatorAttribute.cs │ │ ├── ContractAnnotationAttribute.cs │ │ ├── ImplicitUseKindFlags.cs │ │ ├── ImplicitUseTargetFlags.cs │ │ ├── InstantHandleAttribute.cs │ │ ├── InvokerParameterNameAttribute.cs │ │ ├── LinqTunnelAttribute.cs │ │ ├── LocalizationRequiredAttribute.cs │ │ ├── MeansImplicitUseAttribute.cs │ │ ├── NoEnumerationAttribute.cs │ │ ├── NotNullAttribute.cs │ │ ├── NotifyPropertyChangedInvocatorAttribute.cs │ │ ├── PathReferenceAttribute.cs │ │ ├── PublicAPIAttribute.cs │ │ ├── PureAttribute.cs │ │ ├── ReSharperAnnotations Apache-2.0.licenseheader │ │ ├── StringFormatMethodAttribute.cs │ │ ├── TerminatesProgramAttribute.cs │ │ └── UsedImplicitlyAttribute.cs │ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0 │ │ ├── ArgumentUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0 │ │ ├── Assertion.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0 │ │ ├── ExceptionUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader │ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0 │ │ ├── MemberInfoEqualityComparer.cs │ │ └── SharedSource Apache-2.0.licenseheader │ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0 │ │ ├── NullableTypeUtility.cs │ │ └── SharedSource Apache-2.0.licenseheader ├── IntegrationTestBase.cs ├── IntegrationTests.csproj ├── IntegrationTests.csproj.DotSettings ├── MutableReflection │ ├── GetCustomAttributesTest.cs │ ├── GetInterfaceMapTest.cs │ ├── IsAssignableFromTest.cs │ ├── MakeTypePipeGenericMethodTest.cs │ ├── MakeTypePipeGenericTypeTest.cs │ ├── MutableTypeMemberSelectionTest.cs │ ├── MutableTypeObjectMother.cs │ └── TypePipeCustomAttributeDataTest.cs ├── ParticipantStub.cs ├── Pipeline │ ├── AdditionalTypeTest.cs │ ├── CachingTest.cs │ ├── ConcurrencyTest_WithMultipleGenerationThreads.cs │ ├── ConcurrencyTest_WithSingleGenerationThread.cs │ ├── FlushGeneratedCodeTest.cs │ ├── LoadFlushedCodeTest.cs │ ├── NoModificationOptimizationTest.cs │ ├── NonSubclassableTypeTest.cs │ ├── ObjectCreationTest.cs │ ├── ObjectInitializationTest.cs │ ├── ParticipantConfigurationTest.cs │ ├── ParticipantStateTest.cs │ └── ReflectionServiceTest.cs ├── Properties │ └── AssemblyInfo.cs ├── SetupFixture.cs ├── StrongNaming │ ├── OtherKey.snk │ └── StrongNamingTest.cs └── TypeAssembly │ ├── AbstractTypeTest.cs │ ├── AddConstructorTest.cs │ ├── AddCustomAttributeTest.cs │ ├── AddEventTest.cs │ ├── AddExplicitOverrideTest.cs │ ├── AddFieldTest.cs │ ├── AddGenericMethodTest.cs │ ├── AddInterfaceTest.cs │ ├── AddMethodTest.cs │ ├── AddNestedTypesTest.cs │ ├── AddPropertyTest.cs │ ├── ArrayTypeTest.cs │ ├── ByReferenceTypeTest.cs │ ├── ConstantRuntimeInfosDlrBugTest.cs │ ├── CopyMethodBodyTest.cs │ ├── DefaultExpressionTest.cs │ ├── DelegateInstantiationTest.cs │ ├── ExplicitOverridesTest.cs │ ├── ExpressionHelper.cs │ ├── GenerateAdditionalTypesTest.cs │ ├── GenerationCompletedEventTest.cs │ ├── GenericParameterConversionsTest.cs │ ├── GenericParameterMemberAccessTest.cs │ ├── GetOrAddOverrideBaseMethodTest.cs │ ├── ImplicitOverridesTest.cs │ ├── InterfaceImplementationTest.cs │ ├── KeepConstructorsTest.cs │ ├── LambdaExpressionTest.cs │ ├── MethodAttributesOnOverrideTest.cs │ ├── MethodInstantiationInExpressionTreesTest.cs │ ├── ModifyConstructorTest.cs │ ├── ModifyGenericMethodTest.cs │ ├── ModifyGenericTypeTest.cs │ ├── ModifyMethodTest.cs │ ├── MutableTypeInSignaturesTest.cs │ ├── ReImplementInterfaceMethodTest.cs │ ├── ReferenceMutableMembersTest.cs │ ├── ReflectionWorkaroundsTest.cs │ ├── ShadowingTest.cs │ ├── StackSpillerTest.cs │ ├── TypeAssemblerIntegrationTestBase.cs │ ├── TypeInitializerTest.cs │ └── TypeInstantiationInExpressionTreesTest.cs ├── NuGet.config ├── ReadMe.md ├── Remotion-TypePipe.dependdb.xml ├── Remotion-TypePipe.sln ├── Remotion-TypePipe.sln.DotSettings ├── Remotion-TypePipe.sln.rn.xml ├── Shared.build.props ├── global.json ├── license ├── Apache-2.0.txt └── NOTICE.txt └── packages ├── PackageInfo.ps1 └── repositories.config /.BuildProject: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Build/Customizations/releaseProcessScript.config 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behaviour, in case users don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # DotSettings files have LFs, not CRLFs 5 | *.DotSettings text eol=lf 6 | -------------------------------------------------------------------------------- /Build-OneClick.cmd: -------------------------------------------------------------------------------- 1 | start Build-Remotion.cmd run_test_build -------------------------------------------------------------------------------- /Build/Build.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: .build .targets .nuspec .ps1 2 | -------------------------------------------------------------------------------- /Build/Customizations/Configuration.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Build/Customizations/Local/Configuration.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Unavailable 6 | Unavailable 7 | Unavailable 8 | 9 | 10 | -------------------------------------------------------------------------------- /Build/Customizations/Local/Configuration.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | LocalMachine 6 | NET48 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | LocalMachine 16 | NET48 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Build/Customizations/Properties.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(SolutionDirectory)AssemblyInfoShared.* 5 | rubicon IT GmbH 6 | http://www.rubicon.eu 7 | Copyright (c) rubicon IT GmbH, www.rubicon.eu - Licensed under Apache License 2.0 8 | re-motion Framework: TypePipe (www.re-motion.org) 9 | Remotion.TypePipe 10 | $(SolutionDirectory)Core\Doc\include\GettingStartedWithTypePipe.aml 11 | $(SolutionDirectory)**\Doc\include\*.NamespaceDoc.xml 12 | re-motion TypePipe 13 | 10 14 | Main 15 | 16 | 17 | 18 | Remotion.* 19 | $(SolutionDirectory)packages 20 | net45 21 | 22 | -------------------------------------------------------------------------------- /Build/Customizations/Server/Configuration.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Win_NET48 6 | NET48 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Win_NET48+Win_NET472+Win_NET462 16 | NET48+NET472+NET462 17 | 18 | True 19 | 20 | True 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Build/Customizations/Version.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 4.1.0 13 | 14 | -------------------------------------------------------------------------------- /Build/How-to-Release.md: -------------------------------------------------------------------------------- 1 | # Install Release Process Automation Tool 2 | 3 | `dotnet tool install Remotion.ReleaseProcessAutomation -g --add-source https://nuget.re-motion.org/nuget/re-motion-infrastructure/ --prerelease` 4 | 5 | # Perform a Release 6 | 7 | On the commandline, use `releasetool` to start the process. 8 | 9 | # Reference Section 10 | 11 | `.BuildProject`: located in the solution root. Indicates the location of the configuration file. 12 | 13 | `Build/Customizations/releaseProcessScript.config`: The release tool configuration file. 14 | Contains the MSBuild version and other solution specific details relevant for releasing a new version. -------------------------------------------------------------------------------- /Build/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Build/teamcity.properties: -------------------------------------------------------------------------------- 1 | MSBuildVersion=17.0 -------------------------------------------------------------------------------- /Core.UnitTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core.UnitTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core.UnitTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core.UnitTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core.UnitTests/CodeGeneration/ReflectionEmit/Expressions/UnemittableExpressionVisitorTest.cs: -------------------------------------------------------------------------------- 1 | using System; -------------------------------------------------------------------------------- /Core.UnitTests/CodeGeneration/ReflectionEmit/LambdaCompilation/ILGeneratorObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.UnitTests.CodeGeneration.ReflectionEmit.LambdaCompilation 21 | { 22 | public static class ILGeneratorObjectMother 23 | { 24 | public static ILGenerator Create () 25 | { 26 | var dynamicMethod = new DynamicMethod ("Test", typeof (void), Type.EmptyTypes); 27 | return dynamicMethod.GetILGenerator(); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/CodeGeneration/ReflectionEmit/OtherKey.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/CodeGeneration/ReflectionEmit/OtherKey.snk -------------------------------------------------------------------------------- /Core.UnitTests/Core.UnitTests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Test 5 | 6 | 7 | 8 | 9 | 10 | Remotion TypePipe Library Unit Tests 11 | Remotion.TypePipe.UnitTests 12 | $(AssemblyName) 13 | 14 | 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Core.UnitTests/Implementation/TestDomain/ClassWithManyConstructorArguments.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.UnitTests.Implementation.TestDomain 20 | { 21 | public class ClassWithManyConstructorArguments 22 | { 23 | public int[] Values; 24 | 25 | public ClassWithManyConstructorArguments (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28) 26 | { 27 | Values = new[] { a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28 }; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Core.UnitTests/Moq/MoqExtensions.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using NUnit.Framework.Constraints; 20 | 21 | namespace Remotion.TypePipe.UnitTests.Moq 22 | { 23 | public static class MoqExtensions 24 | { 25 | public static bool IsEquivalent (this IEnumerable actual, IEnumerable expected) 26 | { 27 | return new CollectionEquivalentConstraint (expected).ApplyTo (actual).IsSuccess; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/BodyBuilding/TestableBodyContextBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection; 19 | using Remotion.TypePipe.MutableReflection.BodyBuilding; 20 | 21 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding 22 | { 23 | public class TestableBodyContextBase : BodyContextBase 24 | { 25 | public TestableBodyContextBase (MutableType declaringType, bool isStatic) 26 | : base (declaringType, isStatic) 27 | { 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/BodyBuilding/TestableConstructorBodyContextBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | using Remotion.TypePipe.MutableReflection; 21 | using Remotion.TypePipe.MutableReflection.BodyBuilding; 22 | 23 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding 24 | { 25 | public class TestableConstructorBodyContextBase : ConstructorBodyContextBase 26 | { 27 | public TestableConstructorBodyContextBase ( 28 | MutableType declaringType, bool isStatic, IEnumerable parameterExpressions) 29 | : base (declaringType, isStatic, parameterExpressions) 30 | { 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/BodyBuilding/TestableMethodBaseBodyContextBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | using Remotion.TypePipe.MutableReflection; 21 | using Remotion.TypePipe.MutableReflection.BodyBuilding; 22 | 23 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding 24 | { 25 | public class TestableMethodBaseBodyContextBase : MethodBaseBodyContextBase 26 | { 27 | public TestableMethodBaseBodyContextBase (MutableType declaringType, IEnumerable parameterExpressions, bool isStatic) 28 | : base (declaringType, isStatic, parameterExpressions) {} 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/BodyBuilding/TestableMethodBodyContextBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using Remotion.TypePipe.Dlr.Ast; 21 | using Remotion.TypePipe.MutableReflection; 22 | using Remotion.TypePipe.MutableReflection.BodyBuilding; 23 | 24 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding 25 | { 26 | public class TestableMethodBodyContextBase : MethodBodyContextBase 27 | { 28 | public TestableMethodBodyContextBase ( 29 | MutableType declaringType, 30 | bool isStatic, 31 | IEnumerable parameterExpressions, 32 | IEnumerable genericParameters, 33 | Type returnType, 34 | MethodInfo baseMethod) 35 | : base (declaringType, isStatic, parameterExpressions, genericParameters, returnType, baseMethod) {} 36 | } 37 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/MemberSignatures/TestDomain/ClassForSignatureComparisons.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.UnitTests.MutableReflection.MemberSignatures.TestDomain 20 | { 21 | public class ClassForSignatureComparisons 22 | { 23 | public ClassForSignatureComparisons () { } 24 | public ClassForSignatureComparisons (int i) { } 25 | 26 | public int M1 () { return 0; } 27 | public int M2 () { return 0; } 28 | public int M3 (int i) { return 0; } 29 | 30 | public int P1 { get; set; } 31 | public int P2 { get; set; } 32 | public string P3 { get; set; } 33 | 34 | public event EventHandler E1; 35 | public event EventHandler E2; 36 | public event EventHandler E3; 37 | 38 | public string F1; 39 | public string F2; 40 | public object F3; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/MemberSignatures/TestDomain/ClassForSignatureComparisons2.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.UnitTests.MutableReflection.MemberSignatures.TestDomain 20 | { 21 | public class ClassForSignatureComparisons2 22 | { 23 | public ClassForSignatureComparisons2 () { } 24 | } 25 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/MutableConstructorInfoTestHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.Expressions; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.UnitTests.MutableReflection 22 | { 23 | public static class MutableConstructorInfoTestHelper 24 | { 25 | public static void ModifyConstructor (MutableConstructorInfo mutableConstructor) 26 | { 27 | mutableConstructor.SetBody (ctx => ExpressionTreeObjectMother.GetSomeExpression (typeof (void))); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/MutableFieldInfoTestHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.UnitTests.MutableReflection 22 | { 23 | public static class MutableFieldInfoTestHelper 24 | { 25 | public static void ModifyField (MutableFieldInfo mutableField) 26 | { 27 | mutableField.AddCustomAttribute (CustomAttributeDeclarationObjectMother.Create()); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/MutableReflection/MutableMethodInfoTestHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.Expressions; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.UnitTests.MutableReflection 22 | { 23 | public static class MutableMethodInfoTestHelper 24 | { 25 | public static void ModifyMethod (MutableMethodInfo mutableMethod) 26 | { 27 | mutableMethod.SetBody (ctx => ExpressionTreeObjectMother.GetSomeExpression (mutableMethod.ReturnType)); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /Core.UnitTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // This file is part of the re-motion TypePipe project (typepipe.codeplex.com) 2 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 3 | // 4 | // re-motion TypePipe is free software; you can redistribute it 5 | // and/or modify it under the terms of the Apache License, Version 2.0 6 | // as published by the Apache Software Foundation. 7 | // 8 | // re-motion TypePipe is distributed in the hope that it will be useful, 9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | // Apache License, Version 2.0 for more details. 12 | // 13 | // You should have received a copy of the Apache License, Version 2.0 14 | // along with re-motion; if not, see http://www.apache.org/licenses. 15 | // 16 | using System; 17 | using System.Reflection; 18 | 19 | [assembly: AssemblyCulture ("")] -------------------------------------------------------------------------------- /Core.UnitTests/StrongNaming/AssemblyAnalyzerTest.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using System.Reflection.Emit; 20 | using NUnit.Framework; 21 | using Remotion.TypePipe.StrongNaming; 22 | 23 | namespace Remotion.TypePipe.UnitTests.StrongNaming 24 | { 25 | [TestFixture] 26 | public class AssemblyAnalyzerTest 27 | { 28 | private AssemblyAnalyzer _analyzer; 29 | 30 | [SetUp] 31 | public void SetUp () 32 | { 33 | _analyzer = new AssemblyAnalyzer(); 34 | } 35 | 36 | [Test] 37 | public void IsStrongNamed () 38 | { 39 | var assembly1 = typeof (AssemblyAnalyzerTest).Assembly; 40 | var assembly2 = AssemblyBuilder.DefineDynamicAssembly (new AssemblyName ("test1"), AssemblyBuilderAccess.Run); 41 | 42 | Assert.That (_analyzer.IsStrongNamed (assembly1), Is.True); 43 | Assert.That (_analyzer.IsStrongNamed (assembly2), Is.False); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /Core.UnitTests/TypeAssembly/Implementation/TypeAssemblyResultTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using NUnit.Framework; 4 | using Remotion.Development.UnitTesting.Reflection; 5 | using Remotion.TypePipe.TypeAssembly.Implementation; 6 | using Moq; 7 | 8 | namespace Remotion.TypePipe.UnitTests.TypeAssembly.Implementation 9 | { 10 | [TestFixture] 11 | public class TypeAssemblyResultTest 12 | { 13 | [Test] 14 | public void Initialize_WithTypeAndAdditionalTypes () 15 | { 16 | var type = ReflectionObjectMother.GetSomeClassType(); 17 | var additionalTypes = new Mock> (MockBehavior.Strict); 18 | 19 | var result = new TypeAssemblyResult(type, additionalTypes.Object); 20 | 21 | Assert.That (result.Type, Is.SameAs (type)); 22 | Assert.That (result.AdditionalTypes, Is.SameAs (additionalTypes.Object)); 23 | } 24 | 25 | [Test] 26 | public void Initialize_WithTypeOnly () 27 | { 28 | var type = ReflectionObjectMother.GetSomeClassType(); 29 | 30 | var result = new TypeAssemblyResult(type); 31 | 32 | Assert.That (result.Type, Is.SameAs (type)); 33 | Assert.That (result.AdditionalTypes, Is.Empty); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /Core.UnitTests/TypeAssembly/ParticipantStateTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NUnit.Framework; 3 | using Remotion.TypePipe.TypeAssembly; 4 | 5 | namespace Remotion.TypePipe.UnitTests.TypeAssembly 6 | { 7 | [TestFixture] 8 | public class ParticipantStateTest 9 | { 10 | [Test] 11 | public void GetState_WithIDForAddedValue_ReturnsValue () 12 | { 13 | var participantState = new ParticipantState(); 14 | var value = new object(); 15 | participantState.AddState ("TheID", value); 16 | 17 | Assert.That (participantState.GetState ("TheID"), Is.SameAs (value)); 18 | } 19 | 20 | [Test] 21 | public void GetState_WithUnknownID_ReturnsNull () 22 | { 23 | var participantState = new ParticipantState(); 24 | 25 | Assert.That (participantState.GetState ("UnknownID"), Is.Null); 26 | } 27 | 28 | [Test] 29 | public void AddState_WithExistingID_ThrowsInvalidOperationException () 30 | { 31 | var participantState = new ParticipantState(); 32 | participantState.AddState ("TheID", new object()); 33 | 34 | Assert.That ( 35 | () => participantState.AddState ("TheID", new object()), 36 | Throws.InvalidOperationException 37 | .With.Message.EqualTo ("State identified by the id 'TheID' already exists. State identifier must be unique.")); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Core/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core/App_Packages/Remotion.Utilities.EqualityUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.EqualityUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Core/Caching/IConstructorCallCache.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.Caching 20 | { 21 | /// 22 | /// Caches the s that perform constructor calls for pipeline generated s to enable efficient object creation. 23 | /// 24 | /// 25 | public interface IConstructorCallCache 26 | { 27 | Delegate GetOrCreateConstructorCall (AssembledTypeID typeID, Type delegateType, bool allowNonPublic); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/Caching/IConstructorForAssembledTypeCache.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.Caching 20 | { 21 | /// 22 | /// Caches constructor delegates for assembled types, i.e., the assembled type is part of the key. 23 | /// 24 | /// 25 | public interface IConstructorForAssembledTypeCache 26 | { 27 | Delegate GetOrCreateConstructorCall (Type assembledType, Type delegateType, bool allowNonPublic); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/Caching/ITypeCache.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | 20 | namespace Remotion.TypePipe.Caching 21 | { 22 | /// 23 | /// Caches the s generated by the pipeline and supports loading of s. 24 | /// 25 | /// 26 | public interface ITypeCache 27 | { 28 | Type GetOrCreateType (AssembledTypeID typeID); 29 | 30 | void LoadTypes (IEnumerable generatedTypes); 31 | 32 | Type GetOrCreateAdditionalType (object additionalTypeID); 33 | } 34 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/IConstructorDelegateFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.CodeGeneration 20 | { 21 | /// 22 | /// Interface for classes creating delegates for constructing instances of assembled types. 23 | /// 24 | /// 25 | public interface IConstructorDelegateFactory 26 | { 27 | Delegate CreateConstructorCall (Type requestedType, Type assembledType, Type delegateType, bool allowNonPublic); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/IDependentTypeSorter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration 22 | { 23 | /// 24 | /// An interface for classes that sort types according to their base type and interface dependencies. 25 | /// 26 | /// 27 | public interface IDependentTypeSorter 28 | { 29 | IEnumerable Sort (IEnumerable types); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/IMutableTypeCodeGeneratorFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration 22 | { 23 | /// 24 | /// Defines an interface for classes creating instances of . 25 | /// 26 | /// 27 | [CLSCompliant (false)] 28 | public interface IMutableTypeCodeGeneratorFactory 29 | { 30 | IEnumerable CreateGenerators (IEnumerable mutableTypes); 31 | } 32 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IAssemblyBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Defines an interface for . 24 | /// 25 | public interface IAssemblyBuilder : ICustomAttributeTargetBuilder 26 | { 27 | string SaveToDisk (); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IConstructorBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 22 | { 23 | /// 24 | /// Defines an interface for . 25 | /// 26 | [CLSCompliant (false)] 27 | public interface IConstructorBuilder : IMethodBaseBuilder 28 | { 29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableConstructorInfo constructor); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/ICustomAttributeTargetBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Defines a common interface for builders that create elements which can be used as targets for custom attributes. 24 | /// 25 | public interface ICustomAttributeTargetBuilder 26 | { 27 | void SetCustomAttribute (CustomAttributeDeclaration customAttributeDeclaration); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IEventBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Defines an interface for . 24 | /// 25 | [CLSCompliant (false)] 26 | public interface IEventBuilder : ICustomAttributeTargetBuilder 27 | { 28 | void SetAddOnMethod (IMethodBuilder addMethodBuilder); 29 | void SetRemoveOnMethod (IMethodBuilder removeMethodBuilder); 30 | void SetRaiseMethod (IMethodBuilder raiseMethodBuilder); 31 | } 32 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IFieldBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 22 | { 23 | /// 24 | /// Defines an interface for . 25 | /// 26 | public interface IFieldBuilder : ICustomAttributeTargetBuilder 27 | { 28 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableFieldInfo field); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IGenericTypeParameterBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using System.Reflection.Emit; 20 | using Remotion.TypePipe.MutableReflection.Generics; 21 | 22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 23 | { 24 | /// 25 | /// Defines an interface for . 26 | /// 27 | public interface IGenericTypeParameterBuilder : ICustomAttributeTargetBuilder 28 | { 29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableGenericParameter genericParameter); 30 | 31 | void SetBaseTypeConstraint (Type baseTypeConstraint); 32 | void SetInterfaceConstraints (Type[] interfaceConstraints); 33 | void SetGenericParameterAttributes (GenericParameterAttributes genericParameterAttributes); 34 | } 35 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IMethodBaseBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using System.Reflection.Emit; 20 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation; 21 | using Remotion.TypePipe.Dlr.Ast; 22 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices; 23 | 24 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 25 | { 26 | /// 27 | /// Defines a common interface for and . 28 | /// 29 | [CLSCompliant (false)] 30 | public interface IMethodBaseBuilder : ICustomAttributeTargetBuilder 31 | { 32 | IParameterBuilder DefineParameter (int iSequence, ParameterAttributes attributes, string strParamName); 33 | 34 | void SetBody (LambdaExpression body, IILGeneratorFactory ilGeneratorFactory, DebugInfoGenerator debugInfoGeneratorOrNull); 35 | } 36 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IMethodBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 22 | { 23 | /// 24 | /// Defines an interface for . 25 | /// 26 | [CLSCompliant (false)] 27 | public interface IMethodBuilder : IMethodBaseBuilder 28 | { 29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableMethodInfo method); 30 | 31 | IGenericTypeParameterBuilder[] DefineGenericParameters (string[] names); 32 | 33 | void SetReturnType (Type returnType); 34 | void SetParameters (Type[] parameterTypes); 35 | } 36 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IModuleBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using System.Reflection.Emit; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 22 | { 23 | /// 24 | /// Defines an interface for . 25 | /// 26 | [CLSCompliant (false)] 27 | public interface IModuleBuilder : ICustomAttributeTargetBuilder 28 | { 29 | IAssemblyBuilder AssemblyBuilder { get; } 30 | 31 | ITypeBuilder DefineType (string name, TypeAttributes attr); 32 | } 33 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IParameterBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Defines an interface for . 24 | /// 25 | public interface IParameterBuilder : ICustomAttributeTargetBuilder 26 | { 27 | } 28 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/IPropertyBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Defines an interface for . 24 | /// 25 | [CLSCompliant (false)] 26 | public interface IPropertyBuilder : ICustomAttributeTargetBuilder 27 | { 28 | void SetGetMethod (IMethodBuilder getMethodBuilder); 29 | void SetSetMethod (IMethodBuilder setMethodBuilder); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/ParameterBuilderAdapter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 22 | { 23 | /// 24 | /// Adapts with the interface. 25 | /// 26 | public class ParameterBuilderAdapter : BuilderAdapterBase, IParameterBuilder 27 | { 28 | public ParameterBuilderAdapter (ParameterBuilder parameterBuilder) 29 | : base (ArgumentUtility.CheckNotNull ("parameterBuilder", parameterBuilder).SetCustomAttribute) 30 | { 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Abstractions/ParameterBuilderDecorator.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions 21 | { 22 | /// 23 | /// Decorates an instance of to allow s to be used in signatures and 24 | /// for checking strong-name compatibility. 25 | /// 26 | public class ParameterBuilderDecorator : BuilderDecoratorBase, IParameterBuilder 27 | { 28 | public ParameterBuilderDecorator (IParameterBuilder parameterBuilder, IEmittableOperandProvider emittableOperandProvider) 29 | : base (parameterBuilder, emittableOperandProvider) 30 | { 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/DeferredActionManager.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 22 | { 23 | /// 24 | /// Manages a list of actions that are to be executed at a later point of time. 25 | /// 26 | public class DeferredActionManager 27 | { 28 | private readonly Queue _deferredActions = new Queue(); 29 | 30 | public IEnumerable Actions 31 | { 32 | get { return _deferredActions; } 33 | } 34 | 35 | public void AddAction (Action action) 36 | { 37 | ArgumentUtility.CheckNotNull ("action", action); 38 | 39 | _deferredActions.Enqueue (action); 40 | } 41 | 42 | public void ExecuteAllActions () 43 | { 44 | while (_deferredActions.Count > 0) 45 | _deferredActions.Dequeue()(); 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Expressions/ICodeGenerationExpression.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | using Remotion.TypePipe.Expressions; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions 22 | { 23 | /// 24 | /// Identifies expressions that are specific to the code generator. 25 | /// 26 | /// Expressions of this type can be handled using an . 27 | /// 28 | public interface ICodeGenerationExpression : IPrimitiveTypePipeExpression 29 | { 30 | Expression Accept (ICodeGenerationExpressionVisitor visitor); 31 | } 32 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Expressions/ICodeGenerationExpressionVisitor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | using Remotion.TypePipe.Expressions; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions 22 | { 23 | /// 24 | /// Defines an interface for classes handling instances. 25 | /// 26 | public interface ICodeGenerationExpressionVisitor : IPrimitiveTypePipeExpressionVisitor 27 | { 28 | Expression VisitBox (BoxAndCastExpression node); 29 | Expression VisitUnbox (UnboxExpression node); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/Expressions/UnboxExpression.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | using Remotion.Utilities; 21 | 22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions 23 | { 24 | /// 25 | /// Represents an operation. 26 | /// 27 | public class UnboxExpression : UnaryExpressionBase 28 | { 29 | public UnboxExpression (Expression operand, Type toType) 30 | : base (operand, toType) 31 | { 32 | } 33 | 34 | public override Expression Accept (ICodeGenerationExpressionVisitor visitor) 35 | { 36 | ArgumentUtility.CheckNotNull ("visitor", visitor); 37 | 38 | return visitor.VisitUnbox (this); 39 | } 40 | 41 | protected override UnaryExpressionBase CreateSimiliar (Expression operand) 42 | { 43 | return new UnboxExpression (operand, Type); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IDelegateProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 21 | { 22 | /// 23 | /// Defines an interface for classes that provide delegate s for a given signature. 24 | /// 25 | /// This interface is an implementation detail of . 26 | public interface IDelegateProvider 27 | { 28 | Type GetDelegateType (Type returnType, IEnumerable parameterTypes); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IExpressionPreparer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 21 | { 22 | /// 23 | /// Defines an interface for classes preparing method (and constructor) bodies so that code can be generated for them. 24 | /// 25 | public interface IExpressionPreparer 26 | { 27 | Expression PrepareBody (CodeGenerationContext context, Expression body); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IInitializationBuilder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using JetBrains.Annotations; 20 | using Remotion.TypePipe.MutableReflection; 21 | 22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 23 | { 24 | /// 25 | /// Helps with building initializations for a . 26 | /// 27 | /// This interface is an implementation detail of . 28 | /// 29 | public interface IInitializationBuilder 30 | { 31 | [CanBeNull] Tuple CreateInitializationMembers ([NotNull] MutableType mutableType); 32 | 33 | void WireConstructorWithInitialization ( 34 | [NotNull] MutableConstructorInfo constructor, 35 | [CanBeNull] Tuple initializationMembers); 36 | } 37 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IMemberEmitter.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 21 | { 22 | /// 23 | /// Defines an interface for classes emitting members for mutable reflection objects. Used by . 24 | /// 25 | public interface IMemberEmitter 26 | { 27 | void AddField (CodeGenerationContext context, MutableFieldInfo field); 28 | void AddConstructor (CodeGenerationContext context, MutableConstructorInfo constructor); 29 | void AddMethod (CodeGenerationContext context, MutableMethodInfo method); 30 | void AddProperty (CodeGenerationContext context, MutablePropertyInfo property); 31 | void AddEvent (CodeGenerationContext context, MutableEventInfo event_); 32 | } 33 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IMemberEmitterFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 20 | { 21 | /// 22 | /// Defines an interface for factories. 23 | /// 24 | /// 25 | public interface IMemberEmitterFactory 26 | { 27 | IMemberEmitter CreateMemberEmitter (IEmittableOperandProvider emittableOperandProvider); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IMethodTrampolineProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 21 | { 22 | /// 23 | /// Provides method stubs for performing non virtual calls to virtual methods as it is needed for base calls. 24 | /// 25 | public interface IMethodTrampolineProvider 26 | { 27 | MethodInfo GetNonVirtualCallTrampoline (CodeGenerationContext context, MethodInfo method); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IMutableNestedTypeCodeGeneratorFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 22 | { 23 | /// 24 | /// Defines an interface for classes creating instances of for nested types. 25 | /// 26 | [CLSCompliant (false)] 27 | public interface IMutableNestedTypeCodeGeneratorFactory 28 | { 29 | IMutableTypeCodeGenerator Create (ITypeBuilder enclosingTypeBuilder, MutableType nestedType); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/IReflectionEmitCodeGenerator.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions; 20 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices; 21 | 22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 23 | { 24 | /// 25 | /// Provides Reflection.Emit-specifc operations to the code generation. 26 | /// 27 | /// 28 | [CLSCompliant (false)] 29 | public interface IReflectionEmitCodeGenerator 30 | { 31 | DebugInfoGenerator DebugInfoGenerator { get; } 32 | 33 | IEmittableOperandProvider CreateEmittableOperandProvider (); 34 | ITypeBuilder DefineType (string name, TypeAttributes attributes, IEmittableOperandProvider emittableOperandProvider); 35 | } 36 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/LambdaCompilation/DelegateProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Linq; 20 | using Remotion.TypePipe.Dlr.Ast.Compiler; 21 | using Remotion.Utilities; 22 | 23 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation 24 | { 25 | /// 26 | /// Creates or retrieves delegate s by delegating to . 27 | /// 28 | public class DelegateProvider : IDelegateProvider 29 | { 30 | public Type GetDelegateType (Type returnType, IEnumerable parameterTypes) 31 | { 32 | ArgumentUtility.CheckNotNull ("returnType", returnType); 33 | ArgumentUtility.CheckNotNull ("parameterTypes", parameterTypes); 34 | 35 | var types = parameterTypes.Concat (new[] { returnType }).ToArray(); 36 | return DelegateHelpers.MakeDelegateType (types); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/LambdaCompilation/IILGeneratorFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection.Emit; 19 | 20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation 21 | { 22 | /// 23 | /// Creates customized adapters for Reflection.Emit objects. 24 | /// 25 | [CLSCompliant (false)] 26 | public interface IILGeneratorFactory 27 | { 28 | IILGenerator CreateAdaptedILGenerator (ILGenerator realILGenerator); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/NullDebugInfoGenerator.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | 18 | using System; 19 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 22 | { 23 | /// 24 | /// Implements the null object pattern for . 25 | /// 26 | public class NullDebugInfoGenerator : DebugInfoGenerator 27 | { 28 | public static readonly NullDebugInfoGenerator Instance = new NullDebugInfoGenerator(); 29 | 30 | private NullDebugInfoGenerator () 31 | { 32 | } 33 | 34 | public override void MarkSequencePoint (Dlr.Ast.LambdaExpression method, int ilOffset, Dlr.Ast.DebugInfoExpression sequencePoint) 35 | { 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Core/CodeGeneration/ReflectionEmit/NullExpressionPreparer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit 22 | { 23 | /// 24 | /// An implementation of that just returns the body. 25 | /// 26 | public class NullExpressionPreparer : IExpressionPreparer 27 | { 28 | public Expression PrepareBody (CodeGenerationContext context, Expression body) 29 | { 30 | ArgumentUtility.CheckNotNull ("context", context); 31 | ArgumentUtility.CheckNotNull ("body", body); 32 | 33 | return body; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /Core/Dlr/Compiler/AnalyzedTree.cs: -------------------------------------------------------------------------------- 1 | /* **************************************************************************** 2 | * 3 | * Copyright (c) Microsoft Corporation. 4 | * 5 | * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 6 | * copy of the license can be found in the License.html file at the root of this distribution. If 7 | * you cannot locate the Apache License, Version 2.0, please send an email to 8 | * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 9 | * by the terms of the Apache License, Version 2.0. 10 | * 11 | * You must not remove this notice, or any other, from this software. 12 | * 13 | * 14 | * ***************************************************************************/ 15 | 16 | using System; 17 | using System.Collections.Generic; 18 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices; 19 | 20 | #if TypePipe 21 | namespace Remotion.TypePipe.Dlr.Ast.Compiler { 22 | #else 23 | namespace System.Linq.Expressions.Compiler { 24 | #endif 25 | internal sealed class AnalyzedTree { 26 | internal readonly Dictionary Scopes = new Dictionary(); 27 | internal readonly Dictionary Constants = new Dictionary(); 28 | 29 | internal DebugInfoGenerator DebugInfoGenerator { get; set; } 30 | 31 | // Created by VariableBinder 32 | internal AnalyzedTree() { 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Core/Dlr/Preserve-Dlr.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: .cs 2 | -------------------------------------------------------------------------------- /Core/Dlr/Utils/IRuntimeVariables.cs: -------------------------------------------------------------------------------- 1 | /* **************************************************************************** 2 | * 3 | * Copyright (c) Microsoft Corporation. 4 | * 5 | * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 6 | * copy of the license can be found in the License.html file at the root of this distribution. If 7 | * you cannot locate the Apache License, Version 2.0, please send an email to 8 | * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 9 | * by the terms of the Apache License, Version 2.0. 10 | * 11 | * You must not remove this notice, or any other, from this software. 12 | * 13 | * 14 | * ***************************************************************************/ 15 | 16 | using System; 17 | 18 | namespace Remotion.TypePipe.Dlr.Runtime.CompilerServices { 19 | /// 20 | /// An interface to represent values of runtime variables. 21 | /// 22 | public interface IRuntimeVariables { 23 | /// 24 | /// Count of the variables. 25 | /// 26 | int Count { get; } 27 | 28 | /// 29 | /// An indexer to get/set the values of the runtime variables. 30 | /// 31 | /// An index of the runtime variable. 32 | /// The value of the runtime variable. 33 | object this[int index] { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Core/Dlr/Utils/ReferenceEqualityComparer.cs: -------------------------------------------------------------------------------- 1 | /* **************************************************************************** 2 | * 3 | * Copyright (c) Microsoft Corporation. 4 | * 5 | * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 6 | * copy of the license can be found in the License.html file at the root of this distribution. If 7 | * you cannot locate the Apache License, Version 2.0, please send an email to 8 | * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 9 | * by the terms of the Apache License, Version 2.0. 10 | * 11 | * You must not remove this notice, or any other, from this software. 12 | * 13 | * 14 | * ***************************************************************************/ 15 | 16 | using System; 17 | using System.Collections.Generic; 18 | using System.Runtime.CompilerServices; 19 | 20 | namespace Remotion.TypePipe.Dlr.Dynamic.Utils { 21 | internal sealed class ReferenceEqualityComparer : IEqualityComparer { 22 | internal static readonly ReferenceEqualityComparer Instance = new ReferenceEqualityComparer(); 23 | 24 | private ReferenceEqualityComparer() { } 25 | 26 | public bool Equals(T x, T y) { 27 | return object.ReferenceEquals(x, y); 28 | } 29 | 30 | public int GetHashCode(T obj) { 31 | return RuntimeHelpers.GetHashCode(obj); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Core/Dlr/Utils/TrueReadOnlyCollection.cs: -------------------------------------------------------------------------------- 1 | /* **************************************************************************** 2 | * 3 | * Copyright (c) Microsoft Corporation. 4 | * 5 | * This source code is subject to terms and conditions of the Apache License, Version 2.0. A 6 | * copy of the license can be found in the License.html file at the root of this distribution. If 7 | * you cannot locate the Apache License, Version 2.0, please send an email to 8 | * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 9 | * by the terms of the Apache License, Version 2.0. 10 | * 11 | * You must not remove this notice, or any other, from this software. 12 | * 13 | * 14 | * ***************************************************************************/ 15 | 16 | using System; 17 | using System.Collections.ObjectModel; 18 | 19 | namespace Remotion.TypePipe.Dlr.Runtime.CompilerServices { 20 | sealed class TrueReadOnlyCollection : ReadOnlyCollection { 21 | /// 22 | /// Creates instnace of TrueReadOnlyCollection, wrapping passed in array. 23 | /// !!! DOES NOT COPY THE ARRAY !!! 24 | /// 25 | internal TrueReadOnlyCollection(T[] list) 26 | : base(list) { 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Core/Expressions/IPrimitiveTypePipeExpression.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | 20 | namespace Remotion.TypePipe.Expressions 21 | { 22 | /// 23 | /// Identifies a primitive custom expressions, i.e., an that cannot be reduced to a standard expression and must be 24 | /// handled during code generation. 25 | /// Implementations of this interface must return from 26 | /// . 27 | /// Expressions of this type can be handled using an . 28 | /// 29 | /// 30 | public interface IPrimitiveTypePipeExpression 31 | { 32 | Expression Accept (IPrimitiveTypePipeExpressionVisitor visitor); 33 | } 34 | } -------------------------------------------------------------------------------- /Core/Expressions/IPrimitiveTypePipeExpressionVisitor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | 20 | namespace Remotion.TypePipe.Expressions 21 | { 22 | /// 23 | /// Defines an interface for classes handling instances. 24 | /// 25 | public interface IPrimitiveTypePipeExpressionVisitor 26 | { 27 | Expression VisitExtension (Expression node); 28 | 29 | Expression VisitThis (ThisExpression node); 30 | Expression VisitNewDelegate (NewDelegateExpression node); 31 | } 32 | } -------------------------------------------------------------------------------- /Core/Expressions/ThisExpression.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.Expressions 22 | { 23 | /// 24 | /// Represents the "this" instance within an instance method body. 25 | /// 26 | public class ThisExpression : PrimitiveTypePipeExpressionBase 27 | { 28 | public ThisExpression (Type type) 29 | : base (ArgumentUtility.CheckNotNull ("type", type)) 30 | { 31 | } 32 | 33 | public override Expression Accept (IPrimitiveTypePipeExpressionVisitor visitor) 34 | { 35 | ArgumentUtility.CheckNotNull ("visitor", visitor); 36 | 37 | return visitor.VisitThis (this); 38 | } 39 | 40 | protected internal override Expression VisitChildren (ExpressionVisitor visitor) 41 | { 42 | ArgumentUtility.CheckNotNull ("visitor", visitor); 43 | 44 | return this; 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Core/Implementation/IConstructorFinder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.Implementation 21 | { 22 | /// 23 | /// Searches for a constructor and buildes a useful exception message if it cannot be found. 24 | /// 25 | /// 26 | public interface IConstructorFinder 27 | { 28 | ConstructorInfo GetConstructor (Type requestedType, Type[] parameterTypes, bool allowNonPublic, Type assembledType); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/Implementation/IInitializableObject.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Runtime.Serialization; 19 | 20 | namespace Remotion.TypePipe.Implementation 21 | { 22 | /// 23 | /// This is an infastructure interface and not meant to be used outside of TypePipe code. 24 | /// If a generated type implements this interface, the will invoke the method when creating 25 | /// instances of it. 26 | /// 27 | /// 28 | /// If a type generated by the pipeline is instantiated not by calling a constructor but through 29 | /// , the resulting instance must be prepared with 30 | /// before usage. 31 | /// 32 | public interface IInitializableObject 33 | { 34 | void Initialize (InitializationSemantics initializationSemantics); 35 | } 36 | } -------------------------------------------------------------------------------- /Core/Implementation/InitializationSemantics.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection; 19 | 20 | namespace Remotion.TypePipe.Implementation 21 | { 22 | /// 23 | /// Represents the initialization semantics in which code that was added via is run. 24 | /// 25 | public enum InitializationSemantics 26 | { 27 | Construction, 28 | Deserialization 29 | } 30 | } -------------------------------------------------------------------------------- /Core/MutableReflection/BodyBuilding/ConstructorBodyCreationContext.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | 21 | namespace Remotion.TypePipe.MutableReflection.BodyBuilding 22 | { 23 | /// 24 | /// Provides access to expressions needed for building the bodies of added constructors. 25 | /// 26 | /// 27 | public class ConstructorBodyCreationContext : ConstructorBodyContextBase 28 | { 29 | public ConstructorBodyCreationContext (MutableType declaringType, bool isStatic, IEnumerable parameterExpressions) 30 | : base (declaringType, isStatic, parameterExpressions) 31 | { 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Core/MutableReflection/BodyBuilding/MethodBodyCreationContext.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using Remotion.TypePipe.Dlr.Ast; 21 | 22 | namespace Remotion.TypePipe.MutableReflection.BodyBuilding 23 | { 24 | /// 25 | /// Provides access to expressions needed for building the bodies of added methods. 26 | /// 27 | /// 28 | public class MethodBodyCreationContext : MethodBodyContextBase 29 | { 30 | public MethodBodyCreationContext ( 31 | MutableType declaringType, 32 | bool isStatic, 33 | IEnumerable parameterExpressions, 34 | IEnumerable genericParameters, 35 | Type returnType, 36 | MethodInfo baseMethod) 37 | : base (declaringType, isStatic, parameterExpressions, genericParameters, returnType, baseMethod) 38 | { 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /Core/MutableReflection/BodyChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Dlr.Ast; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.MutableReflection 22 | { 23 | /// 24 | /// Event arguments for the event. 25 | /// 26 | public class BodyChangedEventArgs : EventArgs 27 | { 28 | private readonly Expression _oldBody; 29 | private readonly Expression _newBody; 30 | 31 | public BodyChangedEventArgs (Expression oldBody, Expression newBody) 32 | { 33 | // Old body may be null. 34 | ArgumentUtility.CheckNotNull ("newBody", newBody); 35 | 36 | _oldBody = oldBody; 37 | _newBody = newBody; 38 | } 39 | 40 | public Expression OldBody 41 | { 42 | get { return _oldBody; } 43 | } 44 | 45 | public Expression NewBody 46 | { 47 | get { return _newBody; } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /Core/MutableReflection/ExplicitBaseDefinitionsAddedEventArgs.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.MutableReflection 22 | { 23 | /// 24 | /// Event args for the event. 25 | /// 26 | public class ExplicitBaseDefinitionsAddedEventArgs : EventArgs 27 | { 28 | private readonly MethodInfo _addedExplicitBaseDefinition; 29 | 30 | public ExplicitBaseDefinitionsAddedEventArgs (MethodInfo addedExplicitBaseDefinition) 31 | { 32 | ArgumentUtility.CheckNotNull ("addedExplicitBaseDefinition", addedExplicitBaseDefinition); 33 | 34 | _addedExplicitBaseDefinition = addedExplicitBaseDefinition; 35 | } 36 | 37 | public MethodInfo AddedExplicitBaseDefinition 38 | { 39 | get { return _addedExplicitBaseDefinition; } 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /Core/MutableReflection/ICustomAttributeDataProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.MutableReflection.Implementation; 20 | 21 | namespace Remotion.TypePipe.MutableReflection 22 | { 23 | /// 24 | /// Provides access to the declared and inherited s of a member or parameter. 25 | /// 26 | public interface ICustomAttributeDataProvider : IOwnCustomAttributeDataProvider 27 | { 28 | IEnumerable GetCustomAttributeData (bool inherit); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/MutableReflection/ICustomAttributeNamedArgument.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection 21 | { 22 | /// 23 | /// Represents the TypePipe counterpart of . 24 | /// 25 | public interface ICustomAttributeNamedArgument 26 | { 27 | MemberInfo MemberInfo { get; } 28 | Type MemberType { get; } 29 | object Value { get; } 30 | } 31 | } -------------------------------------------------------------------------------- /Core/MutableReflection/IMutableInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | 20 | namespace Remotion.TypePipe.MutableReflection 21 | { 22 | /// 23 | /// Defines a common interface for mutable members (e.g. , , etc.) and 24 | /// mutable parameters (). 25 | /// 26 | public interface IMutableInfo : ICustomAttributeDataProvider 27 | { 28 | IReadOnlyCollection AddedCustomAttributes { get; } 29 | 30 | void AddCustomAttribute (CustomAttributeDeclaration customAttribute); 31 | } 32 | } -------------------------------------------------------------------------------- /Core/MutableReflection/IMutableMember.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.MutableReflection 20 | { 21 | /// 22 | /// Defines a common interface for mutable members (e.g. , , etc.). 23 | /// 24 | public interface IMutableMember : IMutableInfo 25 | { 26 | MutableType MutableDeclaringType { get; } 27 | } 28 | } -------------------------------------------------------------------------------- /Core/MutableReflection/IMutableMethodBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | 21 | namespace Remotion.TypePipe.MutableReflection 22 | { 23 | /// 24 | /// Defines a common interface for and . 25 | /// 26 | public interface IMutableMethodBase : IMutableMember 27 | { 28 | IReadOnlyList MutableParameters { get; } 29 | IReadOnlyList ParameterExpressions { get; } 30 | Expression Body { get; } 31 | } 32 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IBindingFlagsEvaluator.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Defines an interface for evaluating . 24 | /// 25 | public interface IBindingFlagsEvaluator 26 | { 27 | bool HasRightAttributes (TypeAttributes typeAttributes, BindingFlags bindinFlags); 28 | bool HasRightAttributes (MethodAttributes methodAttributes, BindingFlags bindingFlags); 29 | bool HasRightAttributes (FieldAttributes fieldAttributes, BindingFlags bindingFlags); 30 | } 31 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IInterfaceMappingComputer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Creates s based on the provided data. 24 | /// 25 | /// 26 | /// This interface is an implementation detail of . 27 | /// 28 | public interface IInterfaceMappingComputer 29 | { 30 | InterfaceMapping ComputeMapping ( 31 | MutableType mutableType, Func interfacMappingProvider, Type interfaceType, bool allowPartialInterfaceMapping); 32 | } 33 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IMutableTypeFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Defines an interface for classes creating model instances. 24 | /// 25 | /// 26 | /// Implementations of the interface must be threadsafe. 27 | /// 28 | /// 29 | public interface IMutableTypeFactory 30 | { 31 | MutableType CreateType (string name, string @namespace, TypeAttributes attributes, Type baseType, MutableType declaringType); 32 | 33 | ITypeModificationTracker CreateProxy (Type baseType, ProxyKind proxyKind); 34 | } 35 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IOwnCustomAttributeDataProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Provides access to the for custom attributes that are declared directly on the member or parameter. 24 | /// 25 | public interface IOwnCustomAttributeDataProvider : System.Reflection.ICustomAttributeProvider 26 | { 27 | IEnumerable GetCustomAttributeData (); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IRelatedEventFinder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Defines an interface for classes providing methods for investigating event overrides. 24 | /// 25 | public interface IRelatedEventFinder 26 | { 27 | EventInfo GetBaseEvent (EventInfo @event); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/IRelatedPropertyFinder.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Defines an interface for classes providing methods for investigating property overrides. 24 | /// 25 | public interface IRelatedPropertyFinder 26 | { 27 | PropertyInfo GetBaseProperty (PropertyInfo property); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/ITypeModificationTracker.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.MutableReflection.Implementation 20 | { 21 | /// 22 | /// Provides access to a and determines if it has been modified. 23 | /// 24 | public interface ITypeModificationTracker 25 | { 26 | MutableType Type { get; } 27 | 28 | bool IsModified (); 29 | } 30 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/MemberFactory/IMethodFactory.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using Remotion.TypePipe.Dlr.Ast; 21 | using Remotion.TypePipe.MutableReflection.BodyBuilding; 22 | 23 | namespace Remotion.TypePipe.MutableReflection.Implementation.MemberFactory 24 | { 25 | /// 26 | /// Defines an interface for classes that create instances. 27 | /// 28 | public interface IMethodFactory 29 | { 30 | MutableMethodInfo CreateMethod ( 31 | MutableType declaringType, 32 | string name, 33 | MethodAttributes attributes, 34 | IEnumerable genericParameters, 35 | Func returnTypeProvider, 36 | Func> parameterProvider, 37 | Func bodyProvider); 38 | } 39 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/MemberImplementationUtility.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Utilities; 20 | 21 | namespace Remotion.TypePipe.MutableReflection.Implementation 22 | { 23 | /// 24 | /// Provides functionality for determining names for member implementations. 25 | /// 26 | public class MemberImplementationUtility 27 | { 28 | public static string GetNameForExplicitImplementation (MemberInfo baseOrInterfaceMember) 29 | { 30 | ArgumentUtility.CheckNotNull ("baseOrInterfaceMember", baseOrInterfaceMember); 31 | 32 | return baseOrInterfaceMember.DeclaringType.FullName.Replace ('+', '.') + "." + baseOrInterfaceMember.Name; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/MethodAttributesExtensions.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Provides extensions methods for working with . 24 | /// 25 | public static class MethodAttributesExtensions 26 | { 27 | public static MethodAttributes AdjustVisibilityForAssemblyBoundaries (this MethodAttributes originalAttributes) 28 | { 29 | return originalAttributes.IsSet (MethodAttributes.FamORAssem) 30 | ? ChangeVisibility (originalAttributes, MethodAttributes.Family) 31 | : originalAttributes; 32 | } 33 | 34 | public static MethodAttributes ChangeVisibility (this MethodAttributes originalAttributes, MethodAttributes newVisibility) 35 | { 36 | return (originalAttributes & ~MethodAttributes.MemberAccessMask) | newVisibility; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/ParameterOnCustomMember.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Linq; 20 | using System.Reflection; 21 | 22 | namespace Remotion.TypePipe.MutableReflection.Implementation 23 | { 24 | /// 25 | /// Represents a on a custom member (e.g. descendent of ). 26 | /// This class can be configured with constant values. 27 | /// 28 | public class ParameterOnCustomMember : CustomParameterInfo 29 | { 30 | public ParameterOnCustomMember (MemberInfo declaringMember, int position, string name, Type type, ParameterAttributes attributes) 31 | : base (declaringMember, position, name, type, attributes) 32 | { 33 | } 34 | 35 | public override IEnumerable GetCustomAttributeData () 36 | { 37 | return Enumerable.Empty(); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/ProviderUtility.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.Utilities; 19 | 20 | namespace Remotion.TypePipe.MutableReflection.Implementation 21 | { 22 | /// 23 | /// Contains useful functionality for working with provider delegates. 24 | /// 25 | public static class ProviderUtility 26 | { 27 | public static TResult GetNonNullValue (Func provider, TContext context, string providerArgumentName) 28 | where TResult : class 29 | { 30 | ArgumentUtility.CheckNotNull ("provider", provider); 31 | ArgumentUtility.CheckNotNull ("context", context); 32 | ArgumentUtility.CheckNotNull ("providerArgumentName", providerArgumentName); 33 | 34 | var value = provider (context); 35 | 36 | if (value == null) 37 | throw new ArgumentException ("Provider must not return null.", providerArgumentName); 38 | 39 | return value; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /Core/MutableReflection/Implementation/ProxyKind.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.MutableReflection.Implementation 20 | { 21 | /// 22 | /// Identifies the type of proxy created by .. 23 | /// 24 | public enum ProxyKind 25 | { 26 | AssembledType, 27 | AdditionalType 28 | } 29 | } -------------------------------------------------------------------------------- /Core/MutableReflection/MemberSignatures/IMemberSignature.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.MutableReflection.MemberSignatures 20 | { 21 | /// 22 | /// Defines a common interface for equatable member signatures. 23 | /// That is , , and . 24 | /// 25 | public interface IMemberSignature : IEquatable 26 | { 27 | } 28 | } -------------------------------------------------------------------------------- /Core/MutableReflection/MemberSignatures/IMethodSignatureStringBuilderHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using System.Text; 21 | 22 | namespace Remotion.TypePipe.MutableReflection.MemberSignatures 23 | { 24 | /// 25 | /// Defines an interface for classes building strings representing the signature of a given object. 26 | /// 27 | /// 28 | /// This merely defines an interface for to allow for more flexibility 29 | /// in . 30 | /// 31 | public interface IMethodSignatureStringBuilderHelper 32 | { 33 | void AppendTypeString (StringBuilder sb, Type type); 34 | void AppendSeparatedTypeStrings (StringBuilder sb, IEnumerable types); 35 | } 36 | } -------------------------------------------------------------------------------- /Core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | [assembly: AssemblyCulture ("")] 21 | [assembly: CLSCompliant (true)] 22 | -------------------------------------------------------------------------------- /Core/StrongNaming/FallbackKey.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.IO; 19 | using System.Reflection; 20 | using Remotion.Utilities; 21 | 22 | namespace Remotion.TypePipe.StrongNaming 23 | { 24 | public static class FallbackKey 25 | { 26 | private static readonly Lazy s_instance = new Lazy (Load); 27 | 28 | public static StrongNameKeyPair KeyPair 29 | { 30 | get { return s_instance.Value; } 31 | } 32 | 33 | private static StrongNameKeyPair Load () 34 | { 35 | var assembly = typeof (FallbackKey).Assembly; 36 | using (var resourceStream = assembly.GetManifestResourceStream (typeof (FallbackKey), "FallbackKey.snk")) 37 | using (var reader = new BinaryReader (Assertion.IsNotNull (resourceStream, "Resource 'FallbackKey.snk' was not found."))) 38 | { 39 | var bytes = reader.ReadBytes (596); 40 | return new StrongNameKeyPair (bytes); 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Core/StrongNaming/FallbackKey.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/StrongNaming/FallbackKey.snk -------------------------------------------------------------------------------- /Core/StrongNaming/IAssemblyAnalyzer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | namespace Remotion.TypePipe.StrongNaming 21 | { 22 | /// 23 | /// Defines an interface for classes determining wheter a given is strong-named. 24 | /// 25 | public interface IAssemblyAnalyzer 26 | { 27 | bool IsStrongNamed (Assembly assembly); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/StrongNaming/ITypeAnalyzer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.StrongNaming 20 | { 21 | /// 22 | /// Defines an interface for classes determining wheter a given resides in a strong-named assembly. 23 | /// 24 | public interface ITypeAnalyzer 25 | { 26 | bool IsStrongNamed (Type type); 27 | } 28 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/IAdditionalTypeAssemblyContext.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.TypeAssembly 20 | { 21 | /// 22 | /// A context that provides functionality to assemble additional types. 23 | /// 24 | public interface IAdditionalTypeAssemblyContext : ITypeAssemblyContext 25 | { 26 | } 27 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/IParticipantState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using JetBrains.Annotations; 3 | using Remotion.TypePipe.CodeGeneration; 4 | 5 | namespace Remotion.TypePipe.TypeAssembly 6 | { 7 | /// 8 | /// Defines the API for holding state created by the participants during code generation. 9 | /// The is local to a single . 10 | /// 11 | public interface IParticipantState 12 | { 13 | /// 14 | /// Adds the into the dictionary using the as key. If the already exists, an exception is thrown. 15 | /// 16 | /// The identifier. Must not be or empty. 17 | /// The value. Must not be . 18 | /// State with the specified already exists. 19 | void AddState ([NotNull] string id, [NotNull] object value); 20 | 21 | /// 22 | /// Adds the state value identified by parameter. If the does not exist, is returned. 23 | /// 24 | /// The identifier. Must not be or empty. 25 | /// The identified state value or . 26 | [CanBeNull] 27 | object GetState (string id); 28 | } 29 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/Implementation/AdditionalTypeAssemblyContext.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.TypeAssembly.Implementation 21 | { 22 | /// 23 | /// A context that provides functionality to assemble additional types. 24 | /// 25 | public class AdditionalTypeAssemblyContext : TypeAssemblyContextBase, IAdditionalTypeAssemblyContext 26 | { 27 | public AdditionalTypeAssemblyContext (IMutableTypeFactory mutableTypeFactory, string participantConfigurationID, IParticipantState participantState) 28 | : base (mutableTypeFactory, participantConfigurationID, participantState) 29 | { 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/Implementation/AssembledTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | namespace Remotion.TypePipe.TypeAssembly.Implementation 20 | { 21 | /// 22 | /// This is an infastructure and not meant to be used outside of TypePipe code. 23 | /// The pipeline attaches this custom attribute to the assembled s it generates. 24 | /// 25 | [AttributeUsage (AttributeTargets.Class, AllowMultiple = false, Inherited = false)] 26 | public class AssembledTypeAttribute : Attribute 27 | { 28 | } 29 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/Implementation/IAssembledTypeIdentifierProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Caching; 19 | using Remotion.TypePipe.MutableReflection; 20 | 21 | namespace Remotion.TypePipe.TypeAssembly.Implementation 22 | { 23 | /// 24 | /// Defines an interface for classes providing identifiers for assembled types. 25 | /// 26 | /// 27 | public interface IAssembledTypeIdentifierProvider 28 | { 29 | AssembledTypeID ComputeTypeID (Type requestedType); 30 | 31 | object GetPart (AssembledTypeID typeID, IParticipant participant); 32 | 33 | void AddTypeID (MutableType proxyType, AssembledTypeID typeID); 34 | 35 | AssembledTypeID ExtractTypeID (Type assembledType); 36 | } 37 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/Implementation/NullTypeIdentifierProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Caching; 19 | using Remotion.TypePipe.Dlr.Ast; 20 | using Remotion.Utilities; 21 | 22 | namespace Remotion.TypePipe.TypeAssembly.Implementation 23 | { 24 | /// 25 | /// Implements the null object pattern for . 26 | /// 27 | public class NullTypeIdentifierProvider : ITypeIdentifierProvider 28 | { 29 | public object GetID (Type requestedType) 30 | { 31 | return null; 32 | } 33 | 34 | public Expression GetExpression (object id) 35 | { 36 | Assertion.IsNull (id); 37 | 38 | return Expression.Constant (null, typeof (object)); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /Core/TypeAssembly/ParticipantState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Remotion.Utilities; 4 | 5 | namespace Remotion.TypePipe.TypeAssembly 6 | { 7 | ///Default implementation of the interface. 8 | /// 9 | public class ParticipantState : IParticipantState 10 | { 11 | private readonly Dictionary _state = new Dictionary(); 12 | 13 | public ParticipantState () 14 | { 15 | } 16 | 17 | public void AddState (string id, object value) 18 | { 19 | ArgumentUtility.CheckNotNullOrEmpty ("id", id); 20 | ArgumentUtility.CheckNotNull ("value", value); 21 | 22 | if (_state.ContainsKey (id)) 23 | throw new InvalidOperationException (string.Format ("State identified by the id '{0}' already exists. State identifier must be unique.", id)); 24 | 25 | _state.Add (id, value); 26 | } 27 | 28 | public object GetState (string id) 29 | { 30 | ArgumentUtility.CheckNotNullOrEmpty ("id", id); 31 | 32 | object value; 33 | if (_state.TryGetValue (id, out value)) 34 | return value; 35 | return null; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Core/doc/include/Remotion.TypePipe.NamespaceDoc.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 19 | 20 | 21 | 22 | _SharedItems_ 23 | 24 | 25 | 29 | 30 | -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyException.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | // ReSharper disable once CheckNamespace 20 | namespace Remotion.Development.UnitTesting 21 | { 22 | partial class PEVerifyException : Exception 23 | { 24 | public PEVerifyException (string message) : base (message) 25 | { 26 | } 27 | 28 | public PEVerifyException (string message, Exception inner) : base (message, inner) 29 | { 30 | } 31 | 32 | public PEVerifyException (int resultCode, string output) : base (ConstructMessage (resultCode, output)) 33 | { 34 | } 35 | 36 | private static string ConstructMessage (int code, string output) 37 | { 38 | return string.Format ("PEVerify returned {0}.\n{1}", code, output); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/FixedPEVerifyPathSource.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.Utilities; 19 | 20 | // ReSharper disable once CheckNamespace 21 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 22 | { 23 | partial class FixedPEVerifyPathSource : IPEVerifyPathSource 24 | { 25 | private readonly string _path; 26 | 27 | public FixedPEVerifyPathSource (string path) 28 | { 29 | ArgumentUtility.CheckNotNullOrEmpty ("path", path); 30 | _path = path; 31 | } 32 | 33 | public string GetPEVerifyPath (PEVerifyVersion version) 34 | { 35 | return _path; 36 | } 37 | 38 | public string GetLookupDiagnostics (PEVerifyVersion version) 39 | { 40 | return "Path: " + _path; 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/IPEVerifyPathSource.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | 18 | // ReSharper disable once CheckNamespace 19 | 20 | using System; 21 | 22 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 23 | { 24 | partial interface IPEVerifyPathSource 25 | { 26 | // Returns a valid path or null 27 | string GetPEVerifyPath (PEVerifyVersion version); 28 | string GetLookupDiagnostics (PEVerifyVersion version); 29 | } 30 | } -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/PEVerifyVersion.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | 18 | // ReSharper disable once CheckNamespace 19 | 20 | using System; 21 | 22 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 23 | { 24 | enum PEVerifyVersion 25 | { 26 | DotNet2, 27 | DotNet4 28 | } 29 | } -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/PotentialPEVerifyPathSourceBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.IO; 19 | 20 | // ReSharper disable once CheckNamespace 21 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 22 | { 23 | abstract partial class PotentialPEVerifyPathSourceBase : IPEVerifyPathSource 24 | { 25 | public string GetPEVerifyPath (PEVerifyVersion version) 26 | { 27 | var potentialPath = GetPotentialPEVerifyPath (version); 28 | if (potentialPath != null && File.Exists (potentialPath)) 29 | return potentialPath; 30 | 31 | return null; 32 | } 33 | 34 | public abstract string GetLookupDiagnostics (PEVerifyVersion version); 35 | 36 | protected abstract string GetPotentialPEVerifyPath (PEVerifyVersion version); 37 | } 38 | } -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Development/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Development/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Development/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Development/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /Development/Development.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Library 5 | 6 | 7 | 8 | 9 | 10 | Development Support Library for Remotion.TypePipe 11 | Support for unit testing of libraries based on the re-motion TypePipe. 12 | Remotion.TypePipe.Development 13 | $(AssemblyName) 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Development/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | [assembly: AssemblyCulture ("")] 21 | [assembly: CLSCompliant (true)] 22 | -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/Caching/AssembledTypeIDObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.Caching; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.Caching 21 | { 22 | public static class AssembledTypeIDObjectMother 23 | { 24 | public static AssembledTypeID Create (Type requestedType = null, object[] parts = null) 25 | { 26 | requestedType = requestedType ?? typeof (int); 27 | parts = parts ?? new object[0]; 28 | 29 | return new AssembledTypeID (requestedType, parts); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/CodeGeneration/LoadedTypesContextObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using Remotion.TypePipe.TypeAssembly; 20 | 21 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.CodeGeneration 22 | { 23 | public static class LoadedTypesContextObjectMother 24 | { 25 | public static LoadedTypesContext Create ( 26 | IEnumerable proxyTypes = null, IEnumerable additionalTypes = null, IParticipantState state = null) 27 | { 28 | proxyTypes = proxyTypes ?? new LoadedProxy[0]; 29 | additionalTypes = additionalTypes ?? Type.EmptyTypes; 30 | state = state ?? new ParticipantState(); 31 | 32 | return new LoadedTypesContext (proxyTypes, additionalTypes, state); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/CodeGeneration/TestableTypeAssemblyContextBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | using Remotion.TypePipe.TypeAssembly; 20 | using Remotion.TypePipe.TypeAssembly.Implementation; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.CodeGeneration 23 | { 24 | public class TestableTypeAssemblyContextBase : TypeAssemblyContextBase 25 | { 26 | public TestableTypeAssemblyContextBase ( 27 | IMutableTypeFactory mutableTypeFactory, string participantConfigurationID, IParticipantState participantState) 28 | : base (mutableTypeFactory, participantConfigurationID, participantState) 29 | { 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/CodeGeneration/TypeAssemblyContextBaseObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | using Remotion.TypePipe.TypeAssembly; 20 | using Remotion.TypePipe.TypeAssembly.Implementation; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.CodeGeneration 23 | { 24 | public static class TypeAssemblyContextBaseObjectMother 25 | { 26 | public static TypeAssemblyContextBase Create ( 27 | IMutableTypeFactory mutableTypeFactory = null, 28 | string participantConfigurationID = "participant configuration ID", 29 | IParticipantState state = null) 30 | { 31 | mutableTypeFactory = mutableTypeFactory ?? new MutableTypeFactory(); 32 | state = state ?? new ParticipantState(); 33 | 34 | return new TestableTypeAssemblyContextBase (mutableTypeFactory, participantConfigurationID, state); 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Generics/MethodOnTypeInstantiationObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Development.UnitTesting.Reflection; 20 | using Remotion.TypePipe.MutableReflection.Generics; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Generics 23 | { 24 | public static class MethodOnTypeInstantiationObjectMother 25 | { 26 | public static MethodOnTypeInstantiation Create (TypeInstantiation declaringType = null, MethodInfo method = null) 27 | { 28 | declaringType = declaringType ?? TypeInstantiationObjectMother.Create(); 29 | method = method ?? ReflectionObjectMother.GetSomeMethod(); 30 | 31 | return new MethodOnTypeInstantiation (declaringType, method); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/ArrayTypeBaseObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 21 | { 22 | public static class ArrayTypeBaseObjectMother 23 | { 24 | public static ArrayTypeBase Create (CustomType elementType = null, int rank = 1) 25 | { 26 | elementType = elementType ?? CustomTypeObjectMother.Create (name: "UnspecifiedType"); 27 | 28 | return new TestableArrayTypeBase (elementType, rank); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/ByRefTypeObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 21 | { 22 | public static class ByRefTypeObjectMother 23 | { 24 | public static ByRefType Create (CustomType elementType = null) 25 | { 26 | elementType = elementType ?? CustomTypeObjectMother.Create(name: "UnspecifiedType"); 27 | 28 | return new ByRefType (elementType); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/CustomTypeTestExtensions.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.Development.UnitTesting; 19 | using Remotion.TypePipe.MutableReflection.Implementation; 20 | using Remotion.Utilities; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 23 | { 24 | public static class CustomTypeTestExtensions 25 | { 26 | public static void SetMemberSelector (this CustomType customType, IMemberSelector memberSelector) 27 | { 28 | ArgumentUtility.CheckNotNull ("customType", customType); 29 | ArgumentUtility.CheckNotNull ("memberSelector", memberSelector); 30 | 31 | PrivateInvoke.SetNonPublicField (customType, "_memberSelector", memberSelector); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/MultiDimensionalArrayTypeObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 21 | { 22 | public static class MultiDimensionalArrayTypeObjectMother 23 | { 24 | public static MultiDimensionalArrayType Create (CustomType elementType = null, int rank = 2) 25 | { 26 | elementType = elementType ?? CustomTypeObjectMother.Create (name: "UnspecifiedType"); 27 | 28 | return new MultiDimensionalArrayType (elementType, rank); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/TestableArrayTypeBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Linq; 20 | using System.Reflection; 21 | using Remotion.TypePipe.MutableReflection.Implementation; 22 | 23 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 24 | { 25 | public class TestableArrayTypeBase : ArrayTypeBase 26 | { 27 | public TestableArrayTypeBase (CustomType elementType, int rank) 28 | : base (elementType, rank) {} 29 | 30 | protected override IEnumerable CreateInterfaces (CustomType elementType) 31 | { 32 | return Type.EmptyTypes; 33 | } 34 | 35 | protected override IEnumerable CreateConstructors (int rank) 36 | { 37 | return Enumerable.Empty(); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/TestableCustomFieldInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using Remotion.TypePipe.MutableReflection; 21 | using Remotion.TypePipe.MutableReflection.Implementation; 22 | 23 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 24 | { 25 | public class TestableCustomFieldInfo : CustomFieldInfo 26 | { 27 | public TestableCustomFieldInfo (CustomType declaringType, string name, Type type, FieldAttributes attributes) 28 | : base(declaringType, name, type, attributes) 29 | { 30 | } 31 | 32 | public IEnumerable CustomAttributeDatas; 33 | 34 | public override IEnumerable GetCustomAttributeData () 35 | { 36 | return CustomAttributeDatas; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/TestableCustomParameterInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Collections.Generic; 19 | using System.Reflection; 20 | using Remotion.TypePipe.MutableReflection; 21 | using Remotion.TypePipe.MutableReflection.Implementation; 22 | 23 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 24 | { 25 | public class TestableCustomParameterInfo : CustomParameterInfo 26 | { 27 | public TestableCustomParameterInfo (MemberInfo declaringMember, int position, string name, Type type, ParameterAttributes attributes) 28 | : base(declaringMember, position, name, type, attributes) 29 | { 30 | } 31 | 32 | public IEnumerable CustomAttributeDatas; 33 | 34 | public override IEnumerable GetCustomAttributeData () 35 | { 36 | return CustomAttributeDatas; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/Implementation/VectorTypeObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection.Implementation; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection.Implementation 21 | { 22 | public static class VectorTypeObjectMother 23 | { 24 | public static VectorType Create (CustomType elementType = null) 25 | { 26 | elementType = elementType ?? CustomTypeObjectMother.Create (name: "UnspecifiedType"); 27 | 28 | return new VectorType (elementType); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/MutableFieldInfoObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Development.UnitTesting.Reflection; 20 | using Remotion.TypePipe.MutableReflection; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection 23 | { 24 | public static class MutableFieldInfoObjectMother 25 | { 26 | public static MutableFieldInfo Create ( 27 | MutableType declaringType = null, string name = "_newField", Type type = null, FieldAttributes attributes = (FieldAttributes) 7) 28 | { 29 | declaringType = declaringType ?? MutableTypeObjectMother.Create(); 30 | type = type ?? ReflectionObjectMother.GetSomeType(); 31 | 32 | return new MutableFieldInfo (declaringType, name, type, attributes); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/MutableParameterInfoObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Development.UnitTesting.Reflection; 20 | using Remotion.TypePipe.MutableReflection; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection 23 | { 24 | public static class MutableParameterInfoObjectMother 25 | { 26 | public static MutableParameterInfo Create ( 27 | MemberInfo member = null, int position = 7, string name = "abc", Type type = null, ParameterAttributes attributes = (ParameterAttributes) 7) 28 | { 29 | member = member ?? ReflectionObjectMother.GetSomeMember(); 30 | type = type ?? ReflectionObjectMother.GetSomeType(); 31 | 32 | return new MutableParameterInfo (member, position, name, type, attributes); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Development/UnitTesting/ObjectMothers/MutableReflection/ParameterDeclarationObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Linq; 19 | using System.Reflection; 20 | using Remotion.TypePipe.MutableReflection; 21 | 22 | namespace Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection 23 | { 24 | public static class ParameterDeclarationObjectMother 25 | { 26 | private class UnspecifiedType { } 27 | 28 | public static ParameterDeclaration Create (Type type = null, string name = "parameter", ParameterAttributes attributes = ParameterAttributes.None) 29 | { 30 | type = type ?? typeof (UnspecifiedType); 31 | 32 | return new ParameterDeclaration (type, name, attributes); 33 | } 34 | 35 | public static ParameterDeclaration[] CreateMultiple (int count) 36 | { 37 | return Enumerable.Range (1, count).Select (i => Create (name: "p" + i)).ToArray(); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /Development/UnitTesting/PipelineRegistryTestHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.Development.UnitTesting; 19 | 20 | namespace Remotion.TypePipe.Development.UnitTesting 21 | { 22 | /// 23 | /// Provides supports for unit tests working with the . 24 | /// 25 | public static class PipelineRegistryTestHelper 26 | { 27 | /// 28 | /// Clears the instance provider delegate set via the 's method. 29 | /// 30 | public static void ResetPipelineRegistry () 31 | { 32 | PrivateInvoke.SetNonPublicStaticField (typeof (PipelineRegistry), "s_instanceProvider", null); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Directory.Packages.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | true 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Documentation/Documentation.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Documentation 5 | 6 | 7 | 8 | 9 | 10 | Documentation for Remotion.TypePipe 11 | Contains the documentation file for re-motion TypePipe. 12 | Remotion.TypePipe.Documentation 13 | $(AssemblyName) 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Documentation/Documentation_initial_pipeline_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Documentation/Documentation_initial_pipeline_architecture.png -------------------------------------------------------------------------------- /Documentation/Home_Overview_new_Pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Documentation/Home_Overview_new_Pipeline.png -------------------------------------------------------------------------------- /Documentation/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | 20 | [assembly: AssemblyCulture ("")] 21 | [assembly: CLSCompliant (true)] 22 | -------------------------------------------------------------------------------- /Generate-Snk.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set keyfile=remotion.snk 4 | 5 | echo Current directory: %CD% 6 | echo Checking whether %keyfile% needs to be created... 7 | echo. 8 | if not exist %keyfile% goto notfound 9 | 10 | echo %keyfile% already exists. 11 | 12 | goto end 13 | 14 | :notfound 15 | 16 | echo %keyfile% does not exist, generating... 17 | echo. 18 | sn.exe -k %keyfile% 19 | echo. 20 | 21 | if %ERRORLEVEL%==9009 goto nosn 22 | if not %ERRORLEVEL%==0 goto snerror 23 | 24 | echo Note that this newly generated key file will not match the original key used by rubicon to sign re-motion assemblies. 25 | 26 | goto end 27 | 28 | :nosn 29 | 30 | echo 'sn.exe', which is a part of the .NET/Windows SDK, could not be found in the PATH. Please set the PATH to include the .NET/Windows SDK or run this script from a Visual Studio command prompt. 31 | 32 | exit /b 1 33 | 34 | :snerror 35 | 36 | echo There was an error executing 'sn.exe'. 37 | 38 | exit /b 2 39 | 40 | :end 41 | 42 | exit /b 0 -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.AssemblyLoader.Sources.1.17.6.0/AssemblyLoader.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.IO; 19 | using System.Reflection; 20 | using Remotion.Utilities; 21 | 22 | // ReSharper disable once CheckNamespace 23 | namespace Remotion.Development.UnitTesting.IO 24 | { 25 | /// 26 | /// Provides functionality for loading an from a file path without locking the file. 27 | /// 28 | static partial class AssemblyLoader 29 | { 30 | public static Assembly LoadWithoutLocking (string assemblyFilenameOrPath) 31 | { 32 | ArgumentUtility.CheckNotNullOrEmpty ("assemblyFilenameOrPath", assemblyFilenameOrPath); 33 | 34 | var bytes = File.ReadAllBytes (assemblyFilenameOrPath); 35 | return Assembly.Load (bytes); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/IntegrationTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyException.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | 19 | // ReSharper disable once CheckNamespace 20 | namespace Remotion.Development.UnitTesting 21 | { 22 | partial class PEVerifyException : Exception 23 | { 24 | public PEVerifyException (string message) : base (message) 25 | { 26 | } 27 | 28 | public PEVerifyException (string message, Exception inner) : base (message, inner) 29 | { 30 | } 31 | 32 | public PEVerifyException (int resultCode, string output) : base (ConstructMessage (resultCode, output)) 33 | { 34 | } 35 | 36 | private static string ConstructMessage (int code, string output) 37 | { 38 | return string.Format ("PEVerify returned {0}.\n{1}", code, output); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/FixedPEVerifyPathSource.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.Utilities; 19 | 20 | // ReSharper disable once CheckNamespace 21 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 22 | { 23 | partial class FixedPEVerifyPathSource : IPEVerifyPathSource 24 | { 25 | private readonly string _path; 26 | 27 | public FixedPEVerifyPathSource (string path) 28 | { 29 | ArgumentUtility.CheckNotNullOrEmpty ("path", path); 30 | _path = path; 31 | } 32 | 33 | public string GetPEVerifyPath (PEVerifyVersion version) 34 | { 35 | return _path; 36 | } 37 | 38 | public string GetLookupDiagnostics (PEVerifyVersion version) 39 | { 40 | return "Path: " + _path; 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/IPEVerifyPathSource.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | 18 | // ReSharper disable once CheckNamespace 19 | 20 | using System; 21 | 22 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 23 | { 24 | partial interface IPEVerifyPathSource 25 | { 26 | // Returns a valid path or null 27 | string GetPEVerifyPath (PEVerifyVersion version); 28 | string GetLookupDiagnostics (PEVerifyVersion version); 29 | } 30 | } -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/PEVerifyVersion.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | 18 | // ReSharper disable once CheckNamespace 19 | 20 | using System; 21 | 22 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 23 | { 24 | enum PEVerifyVersion 25 | { 26 | DotNet2, 27 | DotNet4 28 | } 29 | } -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Development.PEVerifier.Sources.1.17.10.0/PEVerifyPathSources/PotentialPEVerifyPathSourceBase.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.IO; 19 | 20 | // ReSharper disable once CheckNamespace 21 | namespace Remotion.Development.UnitTesting.PEVerifyPathSources 22 | { 23 | abstract partial class PotentialPEVerifyPathSourceBase : IPEVerifyPathSource 24 | { 25 | public string GetPEVerifyPath (PEVerifyVersion version) 26 | { 27 | var potentialPath = GetPotentialPEVerifyPath (version); 28 | if (potentialPath != null && File.Exists (potentialPath)) 29 | return potentialPath; 30 | 31 | return null; 32 | } 33 | 34 | public abstract string GetLookupDiagnostics (PEVerifyVersion version); 35 | 36 | protected abstract string GetPotentialPEVerifyPath (PEVerifyVersion version); 37 | } 38 | } -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/IntegrationTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/IntegrationTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /IntegrationTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/IntegrationTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader -------------------------------------------------------------------------------- /IntegrationTests/IntegrationTests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Test 5 | 6 | 7 | 8 | 9 | 10 | Remotion TypePipe Library Integration Tests 11 | Remotion.TypePipe.IntegrationTests 12 | $(AssemblyName) 13 | 14 | 15 | 16 | 17 | PreserveNewest 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /IntegrationTests/MutableReflection/MutableTypeObjectMother.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using Remotion.TypePipe.MutableReflection; 19 | using Remotion.TypePipe.MutableReflection.Implementation; 20 | 21 | namespace Remotion.TypePipe.IntegrationTests.MutableReflection 22 | { 23 | public static class MutableTypeObjectMother 24 | { 25 | public static MutableType Create (Type baseType = null) 26 | { 27 | baseType = baseType ?? typeof (UnspecifiedType); 28 | 29 | return new MutableTypeFactory().CreateProxy (baseType, ProxyKind.AssembledType).Type; 30 | } 31 | 32 | public class UnspecifiedType { } 33 | } 34 | } -------------------------------------------------------------------------------- /IntegrationTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // This file is part of the re-motion TypePipe project (typepipe.codeplex.com) 2 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 3 | // 4 | // re-motion TypePipe is free software; you can redistribute it 5 | // and/or modify it under the terms of the Apache License, Version 2.0 6 | // as published by the Apache Software Foundation. 7 | // 8 | // re-motion TypePipe is distributed in the hope that it will be useful, 9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | // Apache License, Version 2.0 for more details. 12 | // 13 | // You should have received a copy of the Apache License, Version 2.0 14 | // along with re-motion; if not, see http://www.apache.org/licenses. 15 | // 16 | using System; 17 | using System.Reflection; 18 | 19 | [assembly: AssemblyCulture ("")] -------------------------------------------------------------------------------- /IntegrationTests/StrongNaming/OtherKey.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/IntegrationTests/StrongNaming/OtherKey.snk -------------------------------------------------------------------------------- /IntegrationTests/TypeAssembly/ExpressionHelper.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu 2 | // 3 | // See the NOTICE file distributed with this work for additional information 4 | // regarding copyright ownership. rubicon licenses this file to you under 5 | // the Apache License, Version 2.0 (the "License"); you may not use this 6 | // file except in compliance with the License. You may obtain a copy of the 7 | // License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | // License for the specific language governing permissions and limitations 15 | // under the License. 16 | // 17 | using System; 18 | using System.Reflection; 19 | using Remotion.Development.UnitTesting.Reflection; 20 | using Remotion.TypePipe.Dlr.Ast; 21 | 22 | namespace Remotion.TypePipe.IntegrationTests.TypeAssembly 23 | { 24 | public static class ExpressionHelper 25 | { 26 | public static readonly MethodInfo StringConcatMethod = 27 | NormalizingMemberInfoFromExpressionUtility.GetMethod (() => string.Concat ((object) null, null)); 28 | 29 | public static BinaryExpression StringConcat (Expression left, Expression right) 30 | { 31 | return Expression.Add (Expression.Convert(left, typeof(object)), Expression.Convert(right, typeof(object)), StringConcatMethod); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Remotion-TypePipe.dependdb.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | http://dependdb/WebService/ 4 | 5 5 | 10 6 | 25 7 | 50 8 | 5 9 | 3 10 | trunk, master, default 11 | -------------------------------------------------------------------------------- /Remotion-TypePipe.sln.rn.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "9.0.0", 4 | "rollForward": "latestFeature", 5 | "allowPrerelease": true 6 | } 7 | } -------------------------------------------------------------------------------- /license/NOTICE.txt: -------------------------------------------------------------------------------- 1 | ** 2 | ** NOTICE file corresponding to the section 4 (4) of the Apache License, 3 | ** Version 2.0. 4 | ** 5 | 6 | re-motion Framework - TypePipe 7 | www.re-motion.org 8 | Copyright (c) rubicon IT GmbH, www.rubicon.eu 9 | 10 | This software embeds code from "Microsoft Dynamic Language Runtime", now a part of "IronPython". 11 | Copyright (c) Microsoft Corporation 12 | Original software available from "https://github.com/IronLanguages/main" or "https://github.com/IronLanguages/ironpython2". 13 | Relevant code (/Core/Dlr in commit "3dfd952e94c66cdd7f2554602afc463053c1d146" from 2012-02-27) contains a copy of 14 | * "https://github.com/IronLanguages/main/tree/5846bd06372449247e62e22a374c3d41baf4b9fa/Runtime/Microsoft.Scripting.Core" or 15 | * "https://github.com/IronLanguages/ironpython2/tree/5846bd06372449247e62e22a374c3d41baf4b9fa/Runtime/Microsoft.Scripting.Core" 16 | and forked as 17 | * "https://github.com/re-motion/IronLanguages-main/tree/TypePipe-Source/Runtime/Microsoft.Scripting.Core" or 18 | * "https://github.com/re-motion/IronLanguages-ironpython2/tree/TypePipe-Source/Runtime/Microsoft.Scripting.Core", 19 | originally hosted on "https://dlr.codeplex.com", now archived as "https://archive.codeplex.com/?p=dlr". -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | --------------------------------------------------------------------------------