// Найден решение ... Проблема была в том, что у меня есть массив регистра, заполненный при создании (метод contructor), и этот массив не был инстанцирован ,Как реализовать частичный класс со статическим определением объекта в C#
Чтобы сделать это короче, я тоже был noob, чтобы даже поставить точку останова в конструкторе, чтобы увидеть, обработал ли .NET.
Еще раз спасибо за ответы. Вы были очень полезны. :) снова Извините за мой noobness
Что я узнал сегодня: Ты никогда не знаешь, как .net сольются ваш частичный класс -be более осведомлены о первых случайных исключениях
// Изменение состояния 2012/01/30 17:00 или около того Извините, я сузил неправильную проблему. Проблема, объясняемая здесь, по-видимому, не вызвана кодом, поэтому этот вопрос больше не требуется. Благодаря ответчикам!
// РЕКОМЕНДУЕТСЯ, ЗАКРЫТО ... W/E
У меня есть устройство, которое можно связаться различным реестром таких 0x01, 0x02, 0x03 ... Кроме того, я работаю в среде разработки и тому приложение, которое я производю, ориентировано для нашей собственной среды в небольшой конфигурации.
Чтобы превратить этот реестр в объект, который я выбрал, давным-давно, чтобы создать класс, у которого есть собственный конструктор, чтобы создать собственный и единственный экземпляр (как я понимаю, многотонный шаблон дизайна).
Поскольку сейчас существует много реестра, и файл класса становится огромным, я хочу разбить его на части: определения свойств/функций и многотонные объекты.
Когда я пытаюсь использовать этот пример: Register.cs:
namespace DeviceManagement.Register
{
public partial class Register
{
public int id { get; private set; }
public string foo { get; private set; }
public string bar { get; private set; }
protected Register(RegisterEnum id, string foo, string bar)
{
this.id = (int)id;
this.foo = foo;
this.bar = bar;
}
}
}
Register.enum.cs:
namespace DeviceManagement.Register
{
public partial class Register
{
protected enum RegisterEnum
{
reg1 = 0x01,
reg2 = 0x02 //and so on
};
}
}
Register.const.cs:
namespace DeviceManagement.Register
{
public partial class Register
{
public static readonly Register reg1 =
new Register(RegisterEnum.reg1,"foo1","bar1");
public static readonly Register reg2 =
new Register(RegisterEnum.reg2,"foo2","bar2");
//there is plenty more
}
}
Я намеревался использовать его как
namespace DeviceManagement
{
class SomeClassA
{
public void doThisOnDevice(Device device)
{
device.doSomeStuffOn(Register.Register.reg1, SomeCommonlyUsedStrategy);
}
}
}
Вот тест я сделал:
namespace DeviceManagement
{
class SomeClassA
{
public void testIfNull()
{
if(Register.Register.reg1 == null)
MessageBox.Show("It is null");
}
}
}
составителя, IntelliSense не бросает любую ошибку/предупреждение, но, когда я бегу мой проект, объекты Регистрация никогда не инстанциирован. Более того, у меня нет этой проблемы, когда весь этот код находится в одном классе (не частичном) и, очевидно, в том же файле.
Я как бы потерялся, пожалуйста, помогите мне.
Когда вы говорите, что объекты Register никогда не были instanciated_, означает ли это, что 'Register.reg1' является' null' внутри 'doThisOnDevice (...)'? – Nailuj
Кроме ошибок компиляции, в вашем коде отсутствует ошибка. Я думаю, что ваш код здесь не отражает реальный код. –
@Nailuj, Да, это null, и если я установил точку останова на любой строке объявления/инициализации. Он никогда не останавливается на достигнутом. Register.Register.reg1 имеет значение null, когда я пытаюсь вызвать подобное в doThisOnDevice (...) –