Пишу анализатор кода 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. Ссылка на номер строки, вызывающей ошибку, - нулевая строка, «using System;».
Что вызывает такое поведение и как его исправить?