может ли частичный класс получить доступ к статическим методам? - PullRequest
2 голосов
/ 03 февраля 2012

Пока я работаю с MusicStore -MVC3 (92 PageNo) , в котором один из классов POCO они создали следующим образом.

public partial class ShoppingCart
    {
        MusicStoreEntities storeDB = new MusicStoreEntities();

        public static ShoppingCart GetCart(HttpContextBase context)
        {
            var cart = new ShoppingCart();
            cart.ShoppingCartId = cart.GetCartId(context);
            return cart;
        }
     }

Мне интересно, можем ли мы получить доступ к статическому методу в частичных классах? ИМО, мы не можем получить доступ к статическим методам в частичном классе. частичное означает, что другие части класса будут включены в пространство имен. но в этом сценарии я не понимаю, где реализован этот другой частичный класс. 1. Можем ли мы получить доступ к статическому методу в частичных классах? если тогда как? 2. Могу ли я узнать, как этот частичный класс появился в этом приложении музыкального магазина, так как я не могу найти другую его часть реализации.

Обновлено: поскольку я искал все файлы cs в каталоге моделей, другого класса shoppingCart больше нет. если кто-нибудь может сказать мне, где эта частичная реализация сделана, то это было бы полезно.

Ответы [ 2 ]

8 голосов
/ 03 февраля 2012
Класс

A partial в C # может определенно обращаться к static методам.Атрибут partial просто говорит, что класс может (не должен ) быть определен для нескольких файлов и в противном случае не влияет на поиск членов. Ответ на комментарий в вопросе

Возможное объяснение того, почему вы не можете найти другую реализацию ShoppingCart, если она может не существовать.Класс partial не обязательно должен иметь несколько определений.partial только означает, что может быть другими частями определения.

3 голосов
/ 03 февраля 2012
  1. Да, вы можете получить доступ к статическим методам в частичных классах.

    Частичные классы являются просто способом представления обычного класса в нескольких исходных файлах, часто с некоторыми из этих исходных файлов, управляемых (или генерируемых) инструментами.

    Вы можете вызывать ShoppingCart.GetCart(context) где угодно - это обычный публичный статический метод.

  2. До сих пор не совсем ясно, что означает ваш второй вопрос, но не имеет , чтобы вообще быть другой частью. Хорошо (хотя и необычно) иметь частичный класс, который объявлен только в одном файле.

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