Может ли частичный класс обращаться к статическим методам в С#?

Учебное приложение 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;
        }
     }

Как мы можем получить доступ к статическому методу в разделяемых классах? На мой взгляд, мы не можем получить доступ к статическим методам в частичном классе. Атрибут partial означает, что другие части класса будут включены в пространство имен. В этом сценарии я не знаю, где реализован этот другой разделяемый класс.

Мои вопросы об этом статическом методе:

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

Обновлено: в каталоге models нет другого класса ShoppingCart. Кто-нибудь знает, где будет эта частичная реализация?


person Ravi Gadag    schedule 03.02.2012    source источник
comment
Не могли бы вы немного пояснить № 2. Непонятно, что вы там просите   -  person JaredPar    schedule 03.02.2012
comment
Вы должны быть в состоянии так же, как если бы это был любой другой класс. Ты это пробовал? Если да, и это не сработало, какую ошибку вы получаете?   -  person D Stanley    schedule 03.02.2012
comment
@JaredPar обновлен. его частичный класс. Я спрашиваю, где это будет определено.   -  person Ravi Gadag    schedule 03.02.2012
comment
Конечно вы можете! Частичный класс точно такой же, как обычный класс, за исключением того, что вы можете добавлять члены в класс в другом .cs файле. Пожалуйста, уточните, что именно вы собираетесь делать.   -  person Mohammad Dehghan    schedule 03.02.2012
comment
@JaredPar, @MD.Единорог обновлен   -  person Ravi Gadag    schedule 03.02.2012
comment
Я бы не стал сильно беспокоиться о поиске другого аналога частичного класса. Вы загрузили код, который изменился 12 раз с момента регистрации, согласно истории исходного кода. Первоначально могло быть намерение разделить класс между двумя или более файлами, но затем эта идея была отброшена или файлы были объединены. Если вас это сильно беспокоит, удалите ключевое слово partial. Если приложение все еще работает, счастливых дней. Вы также можете проверить историю исходного кода на CodePlex и проверить более раннюю версию кода, если хотите знать, когда это произошло или всегда было так.   -  person Nope    schedule 03.02.2012
comment
@FrançoisWahl спасибо за ваше предложение :)   -  person Ravi Gadag    schedule 03.02.2012


Ответы (2)


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

ИЗМЕНИТЬ Ответ на комментарий в вопросе

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

person JaredPar    schedule 03.02.2012

  1. Да, вы можете получить доступ к статическим методам в разделяемых классах.

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

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

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

person Jon Skeet    schedule 03.02.2012
comment
@Ravi: И что именно вы подразумеваете под словом «могу ли я узнать, как появилось это частичное?» Это просто исходный файл - он есть, вы его видите. Может быть, в этом нет другой части, может быть, есть... - person Jon Skeet; 03.02.2012
comment
я искал все файлы. может быть я что-то упускаю - person Ravi Gadag; 03.02.2012