/// <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); } }