У PostSharp Explorer нет аспекта в текущем решении. - PullRequest
0 голосов
/ 01 июля 2019

Я использую PostSharp 6.2.8 для аспектно-ориентированного программирования (AOP). Мое решение - .Net Core 2.2 Solution.

Я создал аспект. Но в PostSharp Explorer я вижу это сообщение:

screenshot1

Я установил PostSharp NuGet Package (6.2.8) на каждый проект, который я использую в качестве аспекта или ссылки.

Я установил расширение PostSharp 6.2.8 для Visual Studio. Я строю решение успешно.

Кроме того, тест, относящийся к аспектам, не выполняется, а при отладке точки останова пропускаются.

Код аспекта:

[Serializable]
public class FluentValidationAspect : OnMethodBoundaryAspect
{
    Type _validatorType;

    public FluentValidationAspect(Type validatorType)
    {
        _validatorType = validatorType;
    }

    public override void OnEntry(MethodExecutionArgs args)
    {
        var validator = (IValidator)Activator.CreateInstance(_validatorType);
        var entityType = _validatorType.BaseType.GetGenericArguments()[0];
        var entities = args.Arguments.Where(t => t.GetType() == entityType);

        foreach (var entity in entities)
        {
            ValidatorTool.FluentValidate(validator, entity);
        }
    }
}
....
public WordValidator()
    {
        RuleFor(w => w.WordText).NotEmpty();
        RuleFor(w => w.WordText).Length(1, 250);
    }

Aspect Call:

public class WordManager : IWordService
{
    ...

    [FluentValidationAspect(typeof(WordValidator))]
    public Word Add(Word word)
    {
        //ValidatorTool.FluentValidate(new WordValidator(), word);
        return _wordDal.Add(word);
    }
...
}

Аспектный тест:

[ExpectedException(typeof(ValidationException))]
    [TestMethod]
    public void Word_validation_check()
    {
        Mock<IWordDal> mock = new Mock<IWordDal>();
        WordManager wordManager = new WordManager(mock.Object);

        Word word = new Word() { WordText = "" };

        wordManager.Add(word);

    }
...