Ich erhalte eine Codeanalyse-Warnung, die falsch-positiv zu sein scheint.Falsche CA1812-Warnung: "interne Klasse, die scheinbar nie instanziiert wurde ..."
CA1812 : Microsoft.Performance : 'MyClass.MyPrivateClass' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor.
Wie kann ich diese Warnung wieder los? Ich bevorzuge es, Warnungen nicht zu unterdrücken, es sei denn, ich bin mir sicher, dass ich es sonst nicht vermeiden könnte.
Die Klassen wie folgt aussehen:
namespace Some.Namespace
{
public class MyClass
{
private class MyPrivateClass
{
public int Id { get; set; }
public ModelObject { get; set; }
}
}
}
ich es wie folgt verwendet werden:
private IQueryable<MyPrivateClass> GetMyPrivateClasses()
{
return this.Repository().All()
.Select(m => new MyPrivateClass { Id = m.Id, ModelObject = m };
}
Enthält diese Nutzung nicht als Instanziierung zählen?
Wird 'GetMyPrivateClasses()' definitiv aufgerufen? (Zählt nicht, wenn es nur indirekt von einer anderen privaten Methode aufgerufen wird, die nie selbst aufgerufen wurde) –
@MatthewWatson Ja, definitiv. Mein Code funktioniert ordnungsgemäß, und diese spezielle Methode ist ein zentraler Teil meines Berichts, also ja. –
Auch wenn es aufgerufen wird, ist es nicht klar, ob die Klasse instanziiert wird, da diese Methode eine Abfrage zurückgibt, ohne sie auszuführen (z. B. durch Verwendung von "ToList"). –