Visual studio 2010 为什么生成的泛型方法重写代码不正确?

Visual studio 2010 为什么生成的泛型方法重写代码不正确?,visual-studio-2010,optional-parameters,Visual Studio 2010,Optional Parameters,我有一个抽象的泛型类 public abstract class Foo<TType> 现在,继承类 public class BabyFoo : Foo<string> 甚至 public override object DoSomething(string arg = null) 但它确实提出了 public override object DoSomething(string arg = default(TType)) 我最初的想法是这是一个VS2010错误

我有一个抽象的泛型类

public abstract class Foo<TType>
现在,继承类

public class BabyFoo : Foo<string>
甚至

public override object DoSomething(string arg = null)
但它确实提出了

public override object DoSomething(string arg = default(TType))
我最初的想法是这是一个VS2010错误,因为可选参数对c#来说是新的,但是有谁能告诉我IDE生成此代码的真正原因(引用类型vs值类型??)吗?

只是为了澄清:

public abstract class Foo<TType>
{
    public abstract object DoSomething(TType arg = default(TType));
}

public class BabyFoo : Foo<string>
{
    // Expected:
    public override object DoSomething(string arg = default(string))
    // Actual:
    public override object DoSomething(string arg = default(TType));
}
公共抽象类Foo
{
公共抽象对象DoSomething(ttypearg=default(TType));
}
公共类婴儿食品:福
{
//预期:
公共重写对象DoSomething(字符串arg=default(字符串))
//实际:
公共重写对象DoSomething(字符串arg=default(TType));
}
除非我遗漏了什么,否则这只是Visual Studio IDE/code-gen中的一个bug。将方法签名更改为“预期”签名会导致代码被编译,因为“实际”签名由于明显无效而拒绝编译

在为
TType
尝试了几种不同的类型以及
where TType:new()
约束之后,我无法让VS使用
DoSomething
方法生成有效的代码

祝贺您-您(可能)在Visual Studio=)中发现了一个bug


当涉及到代码生成时,总是会出现一些边缘情况,我很久以前就记录了这个问题,但它并没有得到解决,因为这是一个相对来说非常模糊的问题。希望这一个能被修复

确实比我的整洁多了!哈哈-解决方法:0,关闭为:无法修复。不走运。但这并不是真正的问题。我只是想知道我是否错过了什么。也尝试了一些变化,但没有成功,这就是为什么这个问题在这里结束:-)干杯
public override object DoSomething(string arg = default(TType))
public abstract class Foo<TType>
{
    public abstract object DoSomething(TType arg = default(TType));
}

public class BabyFoo : Foo<string>
{
    // Expected:
    public override object DoSomething(string arg = default(string))
    // Actual:
    public override object DoSomething(string arg = default(TType));
}