Я пишу анализатор кода C # и столкнулся с проблемой. Следующий файл исходного кода:
using System;
namespace J4JSoftware.Logging
{
// added to test SharpDoc
[AttributeUsage( validOn: AttributeTargets.Class | AttributeTargets.Interface, Inherited = false, AllowMultiple = true )]
public class DummyAttribute : Attribute
{
#pragma warning disable 67
// ReSharper disable once EventNeverSubscribedTo.Global
public event EventHandler<int> Ralph;
#pragma warning restore 67
#pragma warning disable 8618
public DummyAttribute( string arg1, Type arg2 )
#pragma warning restore 8618
{
}
public int TestField;
}
public interface IDummyInterface1
{
int Number { get; set; }
}
public interface IDummyInterface2 : IDummyInterface1
{
string Text { get; set; }
}
public interface IDummyInterface3<in T>
where T : DummyAttribute
{
string GetValue( T item );
bool TestGenericMethod<TMethod>()
where TMethod : class, IDummyInterface1;
}
}
компилируется без ошибок или предупреждений внутри Visual Studio 2019. Но он генерирует ошибку CS0116 -
Пространство имен не может напрямую содержать такие элементы, как поля или методы.
когда я компилирую его с помощью Roslyn. Ссылка на номер строки, вызывающей ошибку, равна нулю строки, используя System ;.
Что вызывает такое поведение и как его исправить?