我知道泛型类型不会在不同紧密构造类型的实例之间共享。这意味着对于泛型类 C<T>
其中有一个静态字段 X
, C<int>.X
的值和C<string>.X
具有完全不同的、独立的值(value)观。
就我而言,我确实需要在具有不同泛型参数的实例之间共享一个静态字段。
我找到的唯一解决方案是“定义一个非泛型基类来存储静态成员,然后将泛型类型设置为从此类型继承。”
问题是我的类已经从其他 .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/