Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Я на самом деле не использовал платформу Объекта прежде, но быстрый поиск указывает, что у Вас есть несколько опций.
1) всегда Проверяют на другом слое в Вашем приложении
опцию, я просто думал, что брошу его там явно.
2) Рычаг в события OnChanged Объекта затем выполняет проверку
Вероятный хрупкий и стал бы запутывающим/медленным после, если у Вас есть много различных вещей свойств, которые могут измениться для каждого объекта.
3) Реализация частичные методы для проверки изменений свойства
Согласно этот сообщение и этот пошаговая демонстрация там частичные методы, доступные для проверки. Это походит на Ваш наилучший вариант, поскольку это не очень навязчиво, и можно выборочно реализовать проверку, которую Вы хотите.
я надеюсь, что это помогает. Удача.
Если Вы используете ASP.NET MVC, то Вы могли использовать Блок приложений Проверки или Систему. ComponentModel. DataAnnotations. Статьи Используя Аннотирования данных и Используя шоу Блока приложений , как сделать их использование Linq, но использование с платформой объекта должно быть подобным.
Вот простой код, который работает на любом классе, а не только на базе.
public static void DuckCopyShallow(this Object dst, object src)
{
var srcT = src.GetType();
var dstT= dst.GetType();
foreach(var f in srcT.GetFields())
{
var dstF = dstT.GetField(f.Name);
if (dstF == null)
continue;
dstF.SetValue(dst, f.GetValue(src));
}
foreach (var f in srcT.GetProperties())
{
var dstF = dstT.GetProperty(f.Name);
if (dstF == null)
continue;
dstF.SetValue(dst, f.GetValue(src, null), null);
}
}
-121--3448153- Как Бруно сказал, это о неизменяемости. Речь идет не только о последовательностях, но и о любых обертках, например Double, Integer, Character и т.д. Для этого существует множество причин:
В основном это так, что вы, как программист, можете быть уверены, что ваш ряд никогда не будет изменен. Это также, если вы знаете, как это работает, может улучшить управление памятью. Попробуйте создать два идентичные ряды одна за другой, например «hello». При отладке вы заметите, что у них одинаковые идентификаторы, что означает, что они являются точно такими ЖЕ объектами. Это связано с тем, что Java пусть вы это сделаете. Это было бы невозможно, если бы последовательности были мутабельными. Они могут иметь то же, что и я, и т.д., потому что они никогда не изменятся. Итак, если вы когда-нибудь решите создать 1 000 000 последовательности «hello,» то вы действительно сделаете это создадите 1 000 000 указателей на «hello.» Кроме того, назначение любой функции в последовательности или любой обертки по этой причине приведет к созданию другого объекта (снова посмотрите на идентификатор объекта - он изменится).
Дополнительный финал в Java не обязательно означает, что объект не может изменяться (он отличается, например, от C++). Это означает, что адрес, на который он указывает, не может быть изменен, но можно изменить его свойства и/или атрибуты. Поэтому понимание разницы между неизменностью и окончательностью в некоторых случаях может быть действительно важным.
HTH
Ссылки:
В .NET 4 будет реализована стандартная поддержка проверки в Entity-Framework.
Проверьте: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx
Поэтому не работайте над реализацией слишком сложной логики проверки...
Если вы используете WPF или Windows Forms, вы можете реализовать интерфейс IDataErrorInfo .
Пример приложения BookLibrary проекта WPF Application Framework (WAF) показывает, как можно проверить сущности, созданные Entity Framework.