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

  • SEARCH
  • Home
  • 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 943985
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T22:31:14+00:00 2026-05-15T22:31:14+00:00

I have a some code that gets passed a class derived from a certain

  • 0

I have a some code that gets passed a class derived from a certain class. Let’s call this a parameter class.
The code uses reflection to walk the class’ members and analyze certain custom attributes given to them. Basically, it’s a configurable parser which will analyze input according to the attributes and put what it found into the data members.

This is used in several places in our code. You specify the parameter class, putting in attributed data members, and pass this to the parser. Something like this:

public class MyFancyParameters : ParametersBase
{
  [SomeAttribute(Name="blah", AnotherParam=true)]
  public string Blah { get; set; }

  // .. .more such stuff
}

var parameters = new MyFancyParameters();
Parser.Parse(input, parameters);

In many places there are similar groups of attributed data members that need to get parsed. So the parameter classes are, in some places, similar. That’s redundant and that, of course, hurts. Whenever I need a change in such an area, I need to make that change in half a dozen places, all clones. It’s just a matter of time when these parts will start drift apart.

However, the similarities cannot be grouped in acyclic graphs, so I can’t use single inheritance to group them.
What I would do in C++ is to put these chunks of similar stuff into their own classes, just inherit a bunch of them that contain whatever I need, and be done. (I think that’s referred to as mix-in inheritance.)
C#, however, doesn’t have multiple inheritance. So I was thinking of putting these chunks into data members and change the parser to recurse into data members. But that would considerably complicate the parser.

What else is there?

  • 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-15T22:31:14+00:00Added an answer on May 15, 2026 at 10:31 pm

    Can you have your parser accept a collection of parameter classes instead of a single parameter class? Alternately, you could allow the parser to recurse into your parameter class and have it supply additional parameter classes as properties. Basically, every property of a ParametersBase derived class that inherits from type ParametersBase is recursed into and flattened into a single list of parameters.

    Actually, I just saw that you already mentioned the recursive solution. I think this is probably your best bet and it’s not too complex to support. You should be able to create a helper function for enumerating the parameter properties that makes a hierarchy look like a flat class.


    Here’s some code that would provided a ‘flattened’ view of your properties, if I understand your requirement correctly. You’ll probably want to augment the production code with additional safeguards (such as keeping a stack of types to detect circular references.)

    public class ParametersParser
    {
        public static IEnumerable<PropertyInfo> GetAllParameterProperties(Type parameterType)
        {
            foreach (var property in parameterType.GetProperties())
            {
                if (Attribute.IsDefined(property, typeof(SomeAttribute)))
                    yield return property;
    
                if (typeof(ParametersBase).IsAssignableFrom(property.PropertyType))
                {
                    foreach (var subProperty in GetAllParameterProperties(property.PropertyType))
                        yield return subProperty;
                }
            }
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 470k
  • Answers 470k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer I don't think there is THE best way. Everything depends… May 16, 2026 at 3:02 am
  • Editorial Team
    Editorial Team added an answer If you load a HTML page with cURL, it's just… May 16, 2026 at 3:02 am
  • Editorial Team
    Editorial Team added an answer If the variable has been previously defined, you can do… May 16, 2026 at 3:02 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.