Как написать пространство имен, которое предоставляет общие пространства имен для избежания многократного использования операторов в C # .NET - PullRequest
0 голосов
/ 17 марта 2019

Ниже приведен мой код для приложения .NET Core.

CommonSpace.cs

using System.IO;
using System.Linq;
using System.Text.RegularExpressions;

namespace CommonSpace
{
    class CommonSpace
    {
        //dummy class
    }
}

Program.cs

using System;
using CommonSpace;


namespace BackToBasicsApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            /*
            code which uses System.IO, System.Text.RegularExpressions from CommonSpace goes here
            */

        }
    }
}

Как использовать классы, предоставляемые пространствами имен System.IO, System.Text.RegularExpressions из CommonSpace.Этот вопрос меня поразил при рефакторинге некоторого моего кода, и я увидел очень длинный список использования операторов в верхней части моих классов.Это очень простой вопрос, так что простите мне BackToBasicness ...;)

Вот мой пересмотренный CommonSpace.cs

using System;

namespace CommonSpace
{
    using System.IO;
    using System.Linq;
    using System.Text.RegularExpressions;
}

Это все еще не работает:(

1 Ответ

0 голосов
/ 18 марта 2019

Как использовать классы, предоставляемые пространствами имен System.IO, System.Text.RegularExpressions из CommonSpace.

Вы не можете: спецификация языка такова, что операторы using имеют область действия, ограниченную единицей компиляции или телом пространства имен, в котором они объявлены. На практике это означает, что они никогда не видны за пределами файла, в котором находится объявление, а в случае ваших CommonSpace они находятся в фигурных скобках.

Подробнее в спецификации языка C #

Для этого есть веская причина: если вы хотите узнать, какое пространство имен использует класс в фрагменте кода, оно находится прямо в файле. Не было бы конца проблем с конфликтами имен, если бы все директивы using из другого места просачивались в ваше пространство имен.

Если в вашем файле слишком много директив, использующих директивы, то ваш дизайн, вероятно, неправильный, вы должны разделить ваши классы на более мелкие единицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...