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 156605
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T10:21:25+00:00 2026-05-11T10:21:25+00:00

Is there any way in which you can test whether an instance of a

  • 0

Is there any way in which you can test whether an instance of a generic parameter in a generic method has been assigned to when it can be either a value or reference type? I would like to be able to do this in a generic method I have to persist types, where T is the instance and K is the type of the identifier field for that type (which all objects I am persisting have because they inherit from a base type). I do not want to limit K to being a value type. The code is something like this:

public static bool Save<T, K>(T instance) {     // variable to hold object identifer     K instanceId = default(K);      PropertyInfo[] properties = typeof(T).GetProperties();      // loop through properties of the T     // if property is decorated with a specific attribute then assign to instanceId     // end loop      // check that we have a value assigned to instanceId other than default(K)     // if not return false otherwise continue to persist item } 

As K can be a value type checking if it is equal to default(K) results in an error as it relies on it being comparable. Is there a way around this?

Note that I have got around the need for this in the current case by placing a condition on the generic type T that it must inherit from the base type BaseObject so my question is about the general issue around generics and testing assignment.

  • 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. 2026-05-11T10:21:26+00:00Added an answer on May 11, 2026 at 10:21 am

    If you’re going to read from instanceId later, it has to be definitely assigned from a compiler point of view. I would assign it with default(K) and separately have a flag saying whether or not it’s been given a useful value:

    public static bool Save<T, K>(T instance) {     bool idAssigned = false;     // variable to hold object identifer     K instanceId = default(K)      PropertyInfo[] properties = typeof(T).GetProperties();      foreach(PropertyInfo property in properties)     {         if (SomeCondition(property))         {             instanceId = GetId(property);             idAssigned = true;         }     }      if (!idAssigned)     {         return false;     }     Persist(whatever);     return true; } 

    EDIT: Comparing the value of instanceId with any specific value is a non-starter, unless you know for a fact that the value will never be used for a ‘normal’ value explicitly assigned to instanceId.

    Basically you’ve got two bits of information here, so keep them separately – the flag is the way to go.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there any way to remove the dotted line rectangle, which indicates the keyboard
Is there any way to check whether a file is locked without using a
Is there any formula, maybe involving RAM & number of CPUs, which can give
Is there any way to capture the MouseDown even from the .NET 2.0 TextBox
Is there any way to apply an attribute to a model file in ASP.NET
Is there any way, in any language, to hook my program when a user
Is there any way to have something that looks just like a file on
Is there any way to include the SVN repository revision number in the version
Is there any way to use inheritance in database (Specifically in SQL Server 2005)?
Is there any way to force a listview control to treat all clicks as

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.