2014-02-25 3 views
0

Я хотел бы создать вспомогательный класс для выполнения общей задачи.Класс помощника для достижения общей задачи

Например, я извлекаю некоторые результаты из базы данных и присваиваю значения переменным. Но некоторые из полей в моих записях также могут содержать нуль. Я хотел бы проверить перед назначением того, что значение не содержит никакого значения.

Также есть некоторые переменные типа int, поэтому перед проверкой перед конкретным типом нужно проверить.

int iValue=int.parse(Helpers.IsNull(dr[colName].toString())); 
string strValue=Helpers.IsNull(dr[colName].toString()); 

Как создать класс-помощник и какое значение я должен вернуть с помощью метода IsNull?

Маленький запутывать ..

Благодаря

+0

is dr == DataReader? – alexm

+0

[Помощник] (http://blogs.msdn.com/b/nickmalik/archive/2005/09/06/461404.aspx) [Классы] (http://lostechies.com/chrismissal/2009/05/26/anti-patterns-and-worst-practices-you-re-doing-it-wrong /) [is] (http://scottboring.com/the-helper-anti-pattern/) [anti-pattern] (http://programmers.stackexchange.com/questions/134540/are-utility-classes-with-nothing-but-static-members-an-anti-pattern-in-c) – asawyer

+0

Есть ли какое-нибудь решение? – fais

ответ

1

Ну что вы пытаетесь acchieve, чтобы избежать NullReferenceException я думаю.

Вы могли бы добиться этого, написав общий метод, как этот

public static TValue GetValueSafe<TValue,TObject>(TObject obj, Func<TObject,TValue> accessor) 
{ 
    if(obj== null) 
     return default(TValue); 

    return accessor(obj); 
} 

Затем использовать его как это:

string strValue = Helpers.GetValueSafe(dr[colName], o => o.toString()); 

Это будет либо возвращать значение ToString, или если д-р [ColName] == null возвращает значение по умолчанию (строка), которое равно null.

Вы можете удалить это, добавив параметр по умолчанию для определения значения «сбой».

Однако я бы не рекомендовал использовать это.

+0

ЕСЛИ вы не рекомендуете, то какое лучшее решение? – fais

+0

Посмотрите на комментарии по вашему вопросу. – CSharpie

1

Более радикальный подход (который устранит проблему) будет заключаться в том, чтобы полностью уничтожить NULL из ваших значений.

Самый простой способ будет через ISNULL() при запросе к базе данных:

Где сейчас вы

SELECT MyColumn FROM MyTable 

Вы вместо того, чтобы идти

SELECT ISNULL(MyColumn, '') AS MyColumn FROM MyTable 

Тогда вы не можете предположить, не NULLs получит до вашего кода.

Смежные вопросы