我知道,通用类型不会在不同的紧密构造类型的实例之间共享。这意味着对于具有静态字段C<T>的通用类XC<int>.XC<string>.X的值具有完全不同的独立值。
就我而言,我确实需要在具有不同泛型参数的实例之间共享一个静态字段。
我发现的唯一解决方案是“定义一个非泛型基类来存储您的静态成员,然后将泛型设置为从该类型继承。”
问题是我的班级已经从其他.net类继承了。
还有其他解决方法吗?

最佳答案

您可以将请求放到内部非泛型类中以存储共享数据:

public class Bar{}
public class FooGeneric<T> : Bar
{
    public static string SharedData {
        get {
            return Foo.SharedData;
        }
        set{
            Foo.SharedData = value;
        }
    }
}

internal class Foo
{
    public static string SharedData = "Fizz";
}


用法:

Console.WriteLine(FooGeneric<string>.SharedData);    // "Fizz"

FooGeneric<string>.SharedData = "Buzz";
Console.WriteLine(FooGeneric<string>.SharedData);    // "Buzz"

Console.WriteLine(FooGeneric<int>.SharedData);       // "Buzz"

关于c# - 在不同的泛型类实例之间共享静态字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27067160/

10-10 18:18