Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6040603
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T06:32:17+00:00 2026-05-23T06:32:17+00:00

How do you give a C# Auto-Property a default value, using a custom attribute?

  • 0

How do you give a C# Auto-Property a default value, using a custom attribute?

This is the code I want to see:

class Person 
{
    [MyDefault("William")]
    public string Name { get; set; }
}

I am aware that there is no built in method to initialize the default using an attribute – can I write my own custom class that uses my custom attributes to initialize the default?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T06:32:18+00:00Added an answer on May 23, 2026 at 6:32 am

    You could use a helper class like that:

    public class DefaultValueHelper
    {
        public static void InitializeDefaultValues<T>(T obj)
        {
            var properties =
                (from prop in obj.GetType().GetProperties()
                 let attr = GetDefaultValueAttribute(prop)
                 where attr != null
                 select new
                 {
                    Property = prop,
                    DefaultValue = attr.Value
                 }).ToArray();
            foreach (var p in properties)
            {
                p.Property.SetValue(obj, p.DefaultValue, null);
            }
    
        }
    
        private static DefaultValueAttribute GetDefaultValueAttribute(PropertyInfo prop)
        {
            return prop.GetCustomAttributes(typeof(DefaultValueAttribute), true)
                       .Cast<DefaultValueAttribute>()
                       .FirstOrDefault();
        }
    }
    

    And call InitializeDefaultValues in the constructor of your class.

    class Foo
    {
        public Foo()
        {
            DefaultValueHelper.InitializeDefaultValues(this);
        }
    
        [DefaultValue("(no name)")]
        public string Name { get; set; }
    }
    

    EDIT: updated version, which generates and caches a delegate to do the initialization. This is to avoid using reflection every time the method is called for a given type.

    public static class DefaultValueHelper
    {
        private static readonly Dictionary<Type, Action<object>> _initializerCache;
    
        static DefaultValueHelper()
        {
            _initializerCache = new Dictionary<Type, Action<object>>();
        }
    
        public static void InitializeDefaultValues(object obj)
        {
            if (obj == null)
                return;
    
            var type = obj.GetType();
            Action<object> initializer;
            if (!_initializerCache.TryGetValue(type, out initializer))
            {
                initializer = MakeInitializer(type);
                _initializerCache[type] = initializer;
            }
            initializer(obj);
        }
    
        private static Action<object> MakeInitializer(Type type)
        {
            var arg = Expression.Parameter(typeof(object), "arg");
            var variable = Expression.Variable(type, "x");
            var cast = Expression.Assign(variable, Expression.Convert(arg, type));
            var assignments =
                from prop in type.GetProperties()
                let attr = GetDefaultValueAttribute(prop)
                where attr != null
                select Expression.Assign(Expression.Property(variable, prop), Expression.Constant(attr.Value));
    
            var body = Expression.Block(
                new ParameterExpression[] { variable },
                new Expression[] { cast }.Concat(assignments));
            var expr = Expression.Lambda<Action<object>>(body, arg);
            return expr.Compile();
        }
    
        private static DefaultValueAttribute GetDefaultValueAttribute(PropertyInfo prop)
        {
            return prop.GetCustomAttributes(typeof(DefaultValueAttribute), true)
                       .Cast<DefaultValueAttribute>()
                       .FirstOrDefault();
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Possible Duplicate: How do you give a C# Auto-Property a default value? Is there
How do you give a C# auto-property an initial value? I either use the
Please give me the advantages and disadvantages of using the particular framework. Can give
I would like to give a class a unique ID every time a new
can some one please give me advice on how I make this block of
Give me some of your thoughts on which is a better coding practice/makes more
Please give me the direction of the best guidance on the Entity Framework.
To give an example of the kind of request that I can't figure out
i give users special URL with access key in it. users accessing the public
What recommendations can you give for a system which must do the following: Load

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.