Crash as value not long enough?

Posted on 2006-05-12
Last Modified: 2010-04-16

Im getting a crash in my code (at the part commented below)

public virtual object InitialValue
                return dataTypeInitialValue;
                List<string> reasons = new List<string>();
                IsValid(value, reasons);
//LINE BELOW - As reasons.Count = 1
//The string '' is less than the minimum length of 10 characters.
                if(reasons.Count > 0)
                    throw new ApplicationException(reasons[0]);
                dataTypeInitialValue = value;

Now the Minimum and Maximum valid length can change all the time.
Just at this point its crashing as its trying to assing an InitialValue to be "" instead of the minimum required value of 10 (in this case).

The thing is when I created this control (in our program) I gave it a minimum value of 10 but didnt assign the InitialValue to be anything (hence its "" and crashing)

The question is should I change the IsValid method to allow for an empty InitialValue string even if the minimum is set to something greater than 0?

Any ideas?

The following code might help.

public override void IsValid(object value, List<string> reasons)
            if (value == null) return;
            if (!(value is string)) throw new ApplicationException("Value is of type '" + value.GetType().FullName + "', not 'string'.");
            string stringValue = (string)value;
            if (_bHasMinLength && stringValue.Length < _iMinLength) reasons.Add("The string '" + stringValue + "' is less than the minimum length of " + _iMinLength + " characters.");
            if (_bHasMaxLength && stringValue.Length > _iMaxLength) reasons.Add("The string '" + stringValue + "' is greater than the maximum length of " + _iMaxLength + " characters.");
            // TODO: regexp and allowed characters
Question by:paulwhelan
    LVL 11

    Accepted Solution

    i cant follow up your problem.
    when is InitialValue called?
    if you wanna add a value to your reasons list?
    and why are you passing an object in your IsValid method instead of using a string directly?
    you only save strings in your list, correct?

    Author Comment

    Sorry worked it out myself
    please ignore

    Featured Post

    What Should I Do With This Threat Intelligence?

    Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

    Join & Write a Comment

    This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
    Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
    Migrating to Microsoft Office 365 is becoming increasingly popular for organizations both large and small. If you have made the leap to Microsoft’s cloud platform, you know that you will need to create a corporate email signature for your Office 365…
    Hi everyone! This is Experts Exchange customer support.  This quick video will show you how to change your primary email address.  If you have any questions, then please Write a Comment below!

    745 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    15 Experts available now in Live!

    Get 1:1 Help Now