Отображение перечисления от строки

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

27
задан YanetP1988 13 February 2019 в 05:24
поделиться

3 ответа

Любопытный - это должно работать IIRC; я буду видеть, могу ли я сделать быстрый пример - однако, Вы могли бы хотеть проверить, что у Вас есть полностью определенное перечислимое имя (т.е. включая пространство имен).

[обновление] От здесь кажется что версия RTM, поставленная с ошибкой при разрешении перечисления. Одно предложенное обходное решение (на той странице) должно было добавить global:: префикс. Это хорошо работает для меня без этого обходного решения, поэтому возможно, это фиксируется в 3,5 SP1? Это также предположительно хорошо работает в 3,5 при использовании неполного имени, если перечисление находится в том же пространстве имен.

[пример] Да, хорошо работал: с Northwind я определил перечисление для поставлющейся страны:

namespace Foo.Bar
{
    public enum MyEnum
    {
        France,
        Belgium,
        Brazil,
        Switzerland
    }
}

я тогда отредактировал dbml для имения:

<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />

Это генерировало:

private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }

И наконец записал запрос:

using (DataClasses1DataContext ctx = new DataClasses1DataContext())
{
    var qry = from order in ctx.Orders
              where order.ShipCountry == Foo.Bar.MyEnum.Brazil
                || order.ShipCountry == Foo.Bar.MyEnum.Belgium
              select order;
    foreach (var order in qry.Take(10))
    {
        Console.WriteLine("{0}, {1}", order.OrderID, order.ShipCountry);
    }
}

Хорошо работал; результаты:

10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil
34
ответ дан Marc Gravell 28 November 2019 в 05:05
поделиться

Я знаю, что на это ответили, но я все еще получаю эту ошибку. Очень странно.

В любом случае, я нашел решение. Вам нужно ПРЕДВАРИТЕЛЬНО полное пространство имен перечисления с помощью global ::

как WTF? В яблочко. Я знаю, это звучит очень странно. Вот пример экрана =>

alt text http://img11.imageshack.us/img11/7517/lolzqg.png

Так отстой: (

В любом случае, я этого не понял. Какой-то чувак позвонил Мэтт , сделал. И он опубликовал отчет об ошибке в MS Connect, и они не могут воспроизвести его, поэтому, я думаю, он не исправлен.

В любом случае, HTH.

17
ответ дан 28 November 2019 в 05:05
поделиться

Если вы добавите global :: qualyfier и нажмете Control + пробел над типом в файле designer.cs, он распознает тип, и вы сможете удалить его.

1
ответ дан 28 November 2019 в 05:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: