代码分析警告CA1004使用通用方法

Vac*_*ano 2 c# generics compiler-warnings

我有以下通用方法:

// Load an object from the disk
public static T DeserializeObject<T>(String filename) where T : class
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

    try
    {
        TextReader textReader = new StreamReader(filename);
        var result = (T)xmlSerializer.Deserialize(textReader);
        textReader.Close();
        return result;
    }
    catch (FileNotFoundException)
    { }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到以下警告:
CA1004:Microsoft.Design:考虑一种设计,其中'MiscHelpers.DeserializeObject(string)'在任何调用中都不需要显式类型参数'T'.

我已经考虑过了这一点,我不知道如何通过限制可以反序列化的类型来完成它的请求.我坦率地承认,我可能错过了解决这个问题的简单方法.

但如果我不是,那么我唯一的办法是压制这个警告吗?我有一个没有警告或消息的干净项目.我想保持这种方式.

我想我在问"为什么这是一个警告?" 充其量这似乎应该是一个信息.甚至那似乎有点多.它可以或不能修复.如果它不能那么你只是坚持警告没有追索权,但压制它.我错了吗?

SLa*_*aks 7

由于您T在返回类型中使用,这是误报.

它已在VS2010的代码分析中修复.