我有一个程序,需要根据两个不相关的A和B类型做一些事情吗?我怎么能这样做?我无法从通用接口继承A和/或B.
public class Proxy<T>
{
public T GetProxy()
{
if (typeof(T) is A)
// Do something;
else if (typeof(T) is B)
// Do something else;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在进行如下调用,但typeof(T)不等于A或B,而是等于System.RuntimeType.
var proxyA = Proxy<A>.GetProxy();
var proxyB = Proxy<B>.GetProxy();
Run Code Online (Sandbox Code Playgroud)
你可以测试这样的类型:
public class Proxy<T>
{
public T GetProxy()
{
if (typeof(T) == typeof(A))
// Do something;
else if (typeof(T) == typeof(B))
// Do something else;
}
}
Run Code Online (Sandbox Code Playgroud)
或者可能是这样的:
public class Proxy<T>
{
public T GetProxy()
{
if (typeof(A).IsAssignableFrom(typeof(T)))
// Do something;
else if (typeof(B).IsAssignableFrom(typeof(T)))
// Do something else;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,仿制药并不是真的应该以这种方式使用.如果你发现自己为两种完全不同的类型做了完全不同的事情,这可能不是泛型的最佳用法.