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;
}
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
add a comment |
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
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
add a comment |
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
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
c# generics static code-analysis
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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.
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
add a comment |
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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
add a comment |
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
add a comment |
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
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
answered Jan 3 at 10:38


GraxGrax
2,8861221
2,8861221
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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