/// <summary>
        /// Wird zur Kompilierzeit aufgerufen.
        /// </summary>
        /// <param name="method">Methode an der der Aspekt definiert wurde.</param>
        public override void CompileTimeInitialize(MethodBase method)
        {
            try
            {
                // Kontrakte an abstrakten Klassen oder Schnittstellen müssen nicht erzeugt werden.
                if ((method.DeclaringType.IsAbstract)
                    || (method.DeclaringType.IsInterface))
                    return;

                // Bug
                // Hack bitte entfernen
                mAssemblyName = method.DeclaringType.Assembly.FullName;

                ExpressionController expressionController = new ExpressionController();
                ExpressionModel expressionModel = null;

                //System.Windows.Forms.MessageBox.Show(mContractModel.RequireContract.Contract + "\n\r" + mContractModel.EnsureContract.Contract);
                if ((mContractModel.RequireContract != null)
                    && (!(string.IsNullOrEmpty(mContractModel.RequireContract.Contract))))
                {
                    // Ausdruck übersetzen
                    expressionModel = expressionController.ConvertExpression(mContractModel.RequireContract.Contract, mContractModel.Member);
                    mContractModel.RequireContract.ConvertedContract = expressionModel.ConvertedExpression;
                    mContractModel.RequireContract.GetOldValuesStatements = expressionModel.GetOldValueExpressions;
                    // Code erzeugen lassen
                    CodeController.Instance.AddContract(mContractModel.RequireContract, mContractModel);
                }
                if ((!mContractModel.ContractsAreEqual)
                    && (mContractModel.EnsureContract != null)
                    && (!(string.IsNullOrEmpty(mContractModel.EnsureContract.Contract))))
                {
                    // Ausdruck übersetzen
                    expressionModel = expressionController.ConvertExpression(mContractModel.EnsureContract.Contract, mContractModel.Member);
                    mContractModel.EnsureContract.ConvertedContract = expressionModel.ConvertedExpression;
                    mContractModel.EnsureContract.GetOldValuesStatements = expressionModel.GetOldValueExpressions;
                    // Code erzeugen lassen
                    CodeController.Instance.AddContract(mContractModel.EnsureContract, mContractModel);
                }

                base.CompileTimeInitialize(method);
            }
            catch (Exception exception)
            {
                CreateCompilerError(exception.ToString(), method);
            }
        }
        /// <summary>
        /// Wird zur Kompilierzeit aufgerufen.
        /// </summary>
        /// <param name="field">Feld an dem der Aspekt definiert wurde.</param>
        public override void CompileTimeInitialize(System.Reflection.FieldInfo field)
        {
            try
            {
                // Kontrakte an abstrakten Klassen oder Schnittstellen müssen nicht erzeugt werden.
                if ((field.DeclaringType.IsAbstract)
                    || (field.DeclaringType.IsInterface))
                    return;

                ExpressionController expressionController = new ExpressionController();
                ExpressionModel expressionModel = null;

                // Bug
                // Hack bitte entfernen
                mAssemblyName = field.DeclaringType.Assembly.FullName;

                if ((mFieldModel.GetContract != null)
                    && (!(string.IsNullOrEmpty(mFieldModel.GetContract.Contract))))
                {
                    // Ausdruck übersetzen
                    expressionModel = expressionController.ConvertExpression(mFieldModel.GetContract.Contract, mFieldModel.Member);
                    mFieldModel.GetContract.ConvertedContract = expressionModel.ConvertedExpression;
                    mFieldModel.GetContract.GetOldValuesStatements = expressionModel.GetOldValueExpressions;
                    // Code erzeugen lassen
                    CodeController.Instance.AddContract(mFieldModel.GetContract, mFieldModel);
                }
                if ((!mFieldModel.ContractsAreEqual)
                    && (mFieldModel.SetContract != null)
                    && (!(string.IsNullOrEmpty(mFieldModel.SetContract.Contract))))
                {
                    // Ausdruck übersetzen
                    expressionModel = expressionController.ConvertExpression(mFieldModel.SetContract.Contract, mFieldModel.Member);
                    mFieldModel.SetContract.ConvertedContract = expressionModel.ConvertedExpression;
                    mFieldModel.SetContract.GetOldValuesStatements = expressionModel.GetOldValueExpressions;
                    // Code erzeugen lassen
                    CodeController.Instance.AddContract(mFieldModel.SetContract, mFieldModel);
                }

                base.CompileTimeInitialize(field);
            }
            catch (Exception exception)
            {
                CreateCompilerError(exception.ToString(), field);
            }
        }