我有以下代码:
object val1 = 1;
object val2 = 1;
bool result1 = (val1 == val2);//Equals false
bool result2 = val1.Equals(val2); //Equals true
Run Code Online (Sandbox Code Playgroud)
那是怎么回事?修复此问题的唯一方法是使用.Equals()方法吗?
我有以下场景:
class Foo { }
class Foo<T> : Foo { }
Run Code Online (Sandbox Code Playgroud)
然后是两种方法
void DoStuff(Foo foo)
{
DoStuffImpl(foo);
}
void DoStuffImpl(Foo foo)
{
Console.WriteLine("A");
}
void DoStuffImpl<T>(Foo<T> foo)
{
Console.WriteLine("B");
}
void Main()
{
DoStuff(new Foo<int>()); // prints A
}
Run Code Online (Sandbox Code Playgroud)
(注意,代码是在浏览器中编写的,但描述了我面临的情况)
如何让它调用泛型方法,然后打印B?
这可以在没有反思的情况下完成吗?关于如何用反射完成,我有一些想法,但我正在寻找一个更清洁的解决方案,如果存在的话.
注意:我不能创建DoStuff泛型,因为这将与WCF一起使用,并且不允许打开泛型类型.