我有一个类型为X的对象,可以在运行时(显然)检索。
var type = myObject.GetType();
我有一个通用的静态类。
public static class MyStaticClass<T>
{
public static void DoStuff(T something)
{
// bla bla
}
}
What I'd like to do is:
MyStaticClass<myObject.GetType()>.DoStuff(myObject);
但是我不行。
实际上,MyStaticClass只会操作几种类型,并且它们共享几个接口。一个解决方法是写:
if (myObject.GetType() == typeof(X))
{
MyStaticClass<X>.DoStuff(myObject as X);
}
if (myObject.GetType() == typeof(Y))
{
MyStaticClass<Y>.DoStuff(myObject as Y);
}
但是这样写太冗长了,到处都是这种代码真的很丑陋 - 我觉得我不应该这样做,但也不应该被迫这样做。
我不敢相信没有解决方案。或者至少没有更简洁的解决方法吗?如果有的话,我的方法是错误的吗(如果是的话,替代方法是什么)?我应该为X、Y、Z创建一些(抽象的?)基类吗?
MyStaticClass
пјҢе®ғзҡ„DoStuff(object myObject)
ж–№жі•е°ҶеҢ…еҗ«жүҖжңүйӮЈдәӣи®ЁеҺҢзҡ„вҖңеҰӮжһңжҳҜxпјҢеҲҷи°ғз”ЁMyStaticClass<X>.DoStuffпјӣеҰӮжһңжҳҜy...вҖқиҜӯеҸҘпјҢиҝҷж ·иҮіе°‘е®ғ们дёҚдјҡеҲ°еӨ„йғҪжҳҜгҖӮ - Konrad Morawski