我想做这个:
public void MyMethod<T>(T myArg) where T: DataTable, String
{
...
}
这可能吗?
将其设为两种不同的方法将是无限可取的。
public void MyMethod(DataTable myArg)
{
...
}
public void MyMethod(String myArg)
{
...
}
或者,如果是通用的(我不确定为什么在这种情况下需要通用)
public void MyMethod<T>(T myArg) where T: DataTable
{
...
}
public void MyMethodStr<T>(T myArg) where T: string
{
...
}
或更糟糕的情况,如果不是这些类型之一,则抛出错误。这是最不可取的,因为它会在运行时抛出而不是编译。
public void MyMethod<T>(T myArg)
{
if(myArg is String == false && myString is DataTable == false)
throw new InvalidArgumentException(...);
}
但除此之外,没有。