Code Analysis error CA1000:DoNotDeclareStaticMembersOnGenericTypes C#





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







1















Here is my piece of code where I am calling PageObjectBase generic class property to return the instance. This works fine, but when I run the code analysis getting following errors:




CA1000 Remove 'PageObjectBase<T>.PageObject' from 'PageObjectBase<T>' or make it an instance member



CA1000 Remove 'PageObjectBase<T>.InstanceCreation()' from 'PageObjectBase<T>' or make it an instance member




How could I resolve this error without affecting TestBase and the logic implemented in PageObjectBase?



public class TestBase
{
public T NavigateToScreenandReturnPageObject<T>() where T :class, new()
{
return PageObjectBase<T>.PageObject;
}
}

public static class PageObjectBase<T> where T : class, new()
{
private static T singleTonObject;

public static T PageObject
{
get
{
return InstanceCreation();
}
}

public static T InstanceCreation()
{
if (singleTonObject == null)
{
singleTonObject = new T();
}
return singleTonObject;
}
}









share|improve this question

























  • Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

    – Alexei Levenkov
    Jan 3 at 8:59











  • Thanks all for your time.I have let it be like this ignoring the code analysis error.

    – rahul
    Jan 8 at 10:31


















1















Here is my piece of code where I am calling PageObjectBase generic class property to return the instance. This works fine, but when I run the code analysis getting following errors:




CA1000 Remove 'PageObjectBase<T>.PageObject' from 'PageObjectBase<T>' or make it an instance member



CA1000 Remove 'PageObjectBase<T>.InstanceCreation()' from 'PageObjectBase<T>' or make it an instance member




How could I resolve this error without affecting TestBase and the logic implemented in PageObjectBase?



public class TestBase
{
public T NavigateToScreenandReturnPageObject<T>() where T :class, new()
{
return PageObjectBase<T>.PageObject;
}
}

public static class PageObjectBase<T> where T : class, new()
{
private static T singleTonObject;

public static T PageObject
{
get
{
return InstanceCreation();
}
}

public static T InstanceCreation()
{
if (singleTonObject == null)
{
singleTonObject = new T();
}
return singleTonObject;
}
}









share|improve this question

























  • Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

    – Alexei Levenkov
    Jan 3 at 8:59











  • Thanks all for your time.I have let it be like this ignoring the code analysis error.

    – rahul
    Jan 8 at 10:31














1












1








1








Here is my piece of code where I am calling PageObjectBase generic class property to return the instance. This works fine, but when I run the code analysis getting following errors:




CA1000 Remove 'PageObjectBase<T>.PageObject' from 'PageObjectBase<T>' or make it an instance member



CA1000 Remove 'PageObjectBase<T>.InstanceCreation()' from 'PageObjectBase<T>' or make it an instance member




How could I resolve this error without affecting TestBase and the logic implemented in PageObjectBase?



public class TestBase
{
public T NavigateToScreenandReturnPageObject<T>() where T :class, new()
{
return PageObjectBase<T>.PageObject;
}
}

public static class PageObjectBase<T> where T : class, new()
{
private static T singleTonObject;

public static T PageObject
{
get
{
return InstanceCreation();
}
}

public static T InstanceCreation()
{
if (singleTonObject == null)
{
singleTonObject = new T();
}
return singleTonObject;
}
}









share|improve this question
















Here is my piece of code where I am calling PageObjectBase generic class property to return the instance. This works fine, but when I run the code analysis getting following errors:




CA1000 Remove 'PageObjectBase<T>.PageObject' from 'PageObjectBase<T>' or make it an instance member



CA1000 Remove 'PageObjectBase<T>.InstanceCreation()' from 'PageObjectBase<T>' or make it an instance member




How could I resolve this error without affecting TestBase and the logic implemented in PageObjectBase?



public class TestBase
{
public T NavigateToScreenandReturnPageObject<T>() where T :class, new()
{
return PageObjectBase<T>.PageObject;
}
}

public static class PageObjectBase<T> where T : class, new()
{
private static T singleTonObject;

public static T PageObject
{
get
{
return InstanceCreation();
}
}

public static T InstanceCreation()
{
if (singleTonObject == null)
{
singleTonObject = new T();
}
return singleTonObject;
}
}






c# generics static code-analysis






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 7:04









Richardissimo

4,4602827




4,4602827










asked Jan 3 at 6:38









rahulrahul

133




133













  • Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

    – Alexei Levenkov
    Jan 3 at 8:59











  • Thanks all for your time.I have let it be like this ignoring the code analysis error.

    – rahul
    Jan 8 at 10:31



















  • Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

    – Alexei Levenkov
    Jan 3 at 8:59











  • Thanks all for your time.I have let it be like this ignoring the code analysis error.

    – rahul
    Jan 8 at 10:31

















Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

– Alexei Levenkov
Jan 3 at 8:59





Side note: make sure your newly invented wheel is not square by carefully reading csharpindepth.com/Articles/General/Singleton.aspx

– Alexei Levenkov
Jan 3 at 8:59













Thanks all for your time.I have let it be like this ignoring the code analysis error.

– rahul
Jan 8 at 10:31





Thanks all for your time.I have let it be like this ignoring the code analysis error.

– rahul
Jan 8 at 10:31












2 Answers
2






active

oldest

votes


















0














The reason for this is that a static member in a generic type will not be shared among instances of different close constructed types. This means that for a generic class MyGeneric which has public static string MyProp { get; set; }, the values of MyGeneric.MyProp and MyGeneric.MyProp have completely different, independent values.



In most of the cases these may cause runtime errors and that's why code analysis provides suggestion to avoid it.



If you still want to keep the static members on the type and keep the code analysis rule , the. I would suggest to create a non generic base class for T type of types and have static method there.






share|improve this answer
























  • sorry i didn't get you.Could you please give an example

    – rahul
    Jan 3 at 8:18











  • please refer the article for code samples.

    – Manoj Choudhari
    Jan 3 at 8:44





















0














There isn't anything to fix here based on those warnings. Those warnings are aimed at people that misuse static variables in generic classes while not realizing that each generic type produces a different static variable. Your code is actually taking advantage of how static variables work in generic classes.



I would also definitely recommend you read the link Alexei recommended to fix up your singleton implementation. http://csharpindepth.com/Articles/General/Singleton.aspx






share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54017444%2fcode-analysis-error-ca1000donotdeclarestaticmembersongenerictypes-c-sharp%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    The reason for this is that a static member in a generic type will not be shared among instances of different close constructed types. This means that for a generic class MyGeneric which has public static string MyProp { get; set; }, the values of MyGeneric.MyProp and MyGeneric.MyProp have completely different, independent values.



    In most of the cases these may cause runtime errors and that's why code analysis provides suggestion to avoid it.



    If you still want to keep the static members on the type and keep the code analysis rule , the. I would suggest to create a non generic base class for T type of types and have static method there.






    share|improve this answer
























    • sorry i didn't get you.Could you please give an example

      – rahul
      Jan 3 at 8:18











    • please refer the article for code samples.

      – Manoj Choudhari
      Jan 3 at 8:44


















    0














    The reason for this is that a static member in a generic type will not be shared among instances of different close constructed types. This means that for a generic class MyGeneric which has public static string MyProp { get; set; }, the values of MyGeneric.MyProp and MyGeneric.MyProp have completely different, independent values.



    In most of the cases these may cause runtime errors and that's why code analysis provides suggestion to avoid it.



    If you still want to keep the static members on the type and keep the code analysis rule , the. I would suggest to create a non generic base class for T type of types and have static method there.






    share|improve this answer
























    • sorry i didn't get you.Could you please give an example

      – rahul
      Jan 3 at 8:18











    • please refer the article for code samples.

      – Manoj Choudhari
      Jan 3 at 8:44
















    0












    0








    0







    The reason for this is that a static member in a generic type will not be shared among instances of different close constructed types. This means that for a generic class MyGeneric which has public static string MyProp { get; set; }, the values of MyGeneric.MyProp and MyGeneric.MyProp have completely different, independent values.



    In most of the cases these may cause runtime errors and that's why code analysis provides suggestion to avoid it.



    If you still want to keep the static members on the type and keep the code analysis rule , the. I would suggest to create a non generic base class for T type of types and have static method there.






    share|improve this answer













    The reason for this is that a static member in a generic type will not be shared among instances of different close constructed types. This means that for a generic class MyGeneric which has public static string MyProp { get; set; }, the values of MyGeneric.MyProp and MyGeneric.MyProp have completely different, independent values.



    In most of the cases these may cause runtime errors and that's why code analysis provides suggestion to avoid it.



    If you still want to keep the static members on the type and keep the code analysis rule , the. I would suggest to create a non generic base class for T type of types and have static method there.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Jan 3 at 7:06









    Manoj ChoudhariManoj Choudhari

    2,4821722




    2,4821722













    • sorry i didn't get you.Could you please give an example

      – rahul
      Jan 3 at 8:18











    • please refer the article for code samples.

      – Manoj Choudhari
      Jan 3 at 8:44





















    • sorry i didn't get you.Could you please give an example

      – rahul
      Jan 3 at 8:18











    • please refer the article for code samples.

      – Manoj Choudhari
      Jan 3 at 8:44



















    sorry i didn't get you.Could you please give an example

    – rahul
    Jan 3 at 8:18





    sorry i didn't get you.Could you please give an example

    – rahul
    Jan 3 at 8:18













    please refer the article for code samples.

    – Manoj Choudhari
    Jan 3 at 8:44







    please refer the article for code samples.

    – Manoj Choudhari
    Jan 3 at 8:44















    0














    There isn't anything to fix here based on those warnings. Those warnings are aimed at people that misuse static variables in generic classes while not realizing that each generic type produces a different static variable. Your code is actually taking advantage of how static variables work in generic classes.



    I would also definitely recommend you read the link Alexei recommended to fix up your singleton implementation. http://csharpindepth.com/Articles/General/Singleton.aspx






    share|improve this answer




























      0














      There isn't anything to fix here based on those warnings. Those warnings are aimed at people that misuse static variables in generic classes while not realizing that each generic type produces a different static variable. Your code is actually taking advantage of how static variables work in generic classes.



      I would also definitely recommend you read the link Alexei recommended to fix up your singleton implementation. http://csharpindepth.com/Articles/General/Singleton.aspx






      share|improve this answer


























        0












        0








        0







        There isn't anything to fix here based on those warnings. Those warnings are aimed at people that misuse static variables in generic classes while not realizing that each generic type produces a different static variable. Your code is actually taking advantage of how static variables work in generic classes.



        I would also definitely recommend you read the link Alexei recommended to fix up your singleton implementation. http://csharpindepth.com/Articles/General/Singleton.aspx






        share|improve this answer













        There isn't anything to fix here based on those warnings. Those warnings are aimed at people that misuse static variables in generic classes while not realizing that each generic type produces a different static variable. Your code is actually taking advantage of how static variables work in generic classes.



        I would also definitely recommend you read the link Alexei recommended to fix up your singleton implementation. http://csharpindepth.com/Articles/General/Singleton.aspx







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 3 at 10:38









        GraxGrax

        2,8861221




        2,8861221






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54017444%2fcode-analysis-error-ca1000donotdeclarestaticmembersongenerictypes-c-sharp%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

            Npm cannot find a required file even through it is in the searched directory