防止方法被修剪

Prevent Method from being Trimmed

我试图阻止 IL Linker 修剪我的 .NET WebAssembly 中的方法。因为外部调用了方法Callback(),静态分析认为没有用到就去掉了。我尝试了一些属性,DynamicDependency、DynamicallyAccessedMembers 和 RequiresUnreferencedCode,但我感觉我没有正确使用它们。

我知道我可以使用 XML 配置或通过执行类似 if(someAlwaysFalseCondition) { Callback(); } 的操作来防止修剪,但在我的上下文中这些都不是可行的解决方案。

我应该如何将属性应用于 Callback() 以防止它被 IL 链接器修剪?

public class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Loaded.");
    }
    
    public static void Callback()
    {
        Console.WriteLine("Callback");
    }
}

该属性应用于方法,并指定应包括哪些其他类型、方法或成员。在这个例子中它的“Main()”:

public class Program
{
    [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(Program))]
    static void Main(string[] args)
    {
        Console.WriteLine("Loaded.");
    }

    public static void Callback()
    {
        Console.WriteLine("Callback");
    }
}