C# (CSharp) MixinRefactoring Namespace

Nested Namespaces

MixinRefactoring.Test

Classes

Name Description
AddFieldDeclarationForMixinCommand generates a field reference in the child class that points to the mixin
AddInterfacesToChildSyntaxWriter
AddMixinToBaseListCommand the mixin and its interfaces will be added to the base class list of the child class
BaseClassSyntaxReader
BaseTypeSyntaxExtension
Class a class represents an class declaration that was either read from source code or from a type symbol
ClassFactory can create class objects either from plain source code or from symbol information. Even when source code is read, symbol information is needed to resolve the base class. Furhter base classes will be resolved recursivly.
ClassWithSourceCode this class contains also its syntax node which was used to create it. It can be used to extend the syntax later with delegation methods
ClassWithTypeSymbol
CompositeCommand base class for commands composed of other commands. A composite command will execute all its commands sequentially and will create
Constructor
ConstructorDeclarationExtension
ConstructorInjectionSyntaxWriter extends a given class declaration by adding/extending constructors with an injected mixin instance
ConstructorList
ConstructorSyntaxReader simply checks if a class declaration contains a constructor.
CreateMixinFromFieldDeclarationCommand Composite command that includes a mixin into a child class. A reference to the mixin is already defined as a field in the child class.
CreateMixinFromInterfaceCommand A composite command that includes a mixin to a child class by generating the mixin from an interface of the child class. A reference field to the mixin instance will also be created in the child class.
DocumentationComment stores the document comment of a class member.
DocumentationComment.Attribute represents an attribute in an xml comment
DocumentationComment.DocumentationElement stores an xml document element.
Event representation of an event
EventSymbolReader
EventSyntaxReader reads event syntax from a child class and stores them in an event object list
FieldSyntaxReader
IncludeMixinCommand includes a mixin in a child class.
IncludeMixinSyntaxWriter class that generates the syntax nodes needed for forwarding member calls to the mixin reference.
IndexerProperty index properties can also have a parameterlist, also their name is not relevant, so their meta name, which is "Item" is used
InjectConstructorImplementationStrategy this method injects the mixin as parameter into the child class constructor. The logic works by the following rules: 1. Every constructor in the class will be extended 2. If a constructor does not have an initialization list with a constructor of the same class, the mixin field will be assigned in this constructors body. 3. If the constructor initializer has a constructor of the same class, the parameter will be delegated to this constructor. 4. If the constructor already has a parameter of the same type with the same name, do not add it again Example: public class Test { private Mixin _mixin; public Test(){} public Test(int i):this(){} } becomes: public class Test { private Mixin _mixin; public Test(Mixin mixin){_mixin = mixin;} public Test(int i,Mixin mixin=null):this(mixin){} } In that way, the mixin instance will always be initialized, no matter which constructor is called.
InjectConstructorImplementationStrategy.ConstructorArgument this is just a little helper class used to organize the mapping information between a constructor parameter and its corresponding argument in the initializers list
InjectMixinCommandUnitTest
InjectMixinsIntoChildCommand command that adds the constructor injection code of the mixins into the child class
Interface representation of an interface that is implemented by a class. Currently, only the name of the interface is important to us
InterfaceSyntaxReader
Member
MemberComparer
MemberDeclarationSyntaxExtension
MetaDataReferenceResolver
Method
MethodSymbolReader
MethodSyntaxReader
Mixer the mixers includes a mixin into a target (the mixin child) by adding an implementation of every mixin member to the mixin child
MixinCommandBase base class for mixin operations
MixinRefactoringCodeRefactoringProvider
MixinReference class that represents the reference to a mixin with a mixin child
MixinReferenceFactory
NameMixin
Parameter
ParameterSymbolReader
ParameterSyntaxExpression
ParameterSyntaxReader
Property
PropertySymbolReader
PropertySyntaxReader
RemoveWhitespaceVisitor syntax writer that removes the whitespaces from a syntax node. Parts of this implementation are based on https://github.com/JosefPihrt/Pihrtsoft.CodeAnalysis/blob/master/source/Pihrtsoft.CodeAnalysis.Common/CSharp/Removers/WhitespaceOrEndOfLineRemover.cs from Josef Pihrt, licensed under the Apache License, Version 2.0
SemanticTypeReaderBase
Settings stores the settings for the code generation. The settings can be set via an options dialog.
SettingsSerializer class handles the serialization / deserialization of option values from and to the settings storage.
StringExtension
SyntaxNodeExtension
SyntaxWalkerWithSemantic
TypeSymbolExtension