假设我有班级
class SomeClass<T>
{
public static void someMethod(T param1) // this gives an error
// I have to do something like (var param1)
{
// ...
// ...
}
}
如何要求param1为T类型,以便我可以将方法调用为:
SomeOtherClass object1 = new SomeOtherClass();
SomeClass<SomeOtherClass>.someMethod(object1);
答案 0 :(得分:2)
class SomeClass<T>
{
public static void someMethod<T>(T myobject)
{
}
}
答案 1 :(得分:1)
只需使用通用方法即可。
public static void SomeMethod<T>(T param1) ...
答案 2 :(得分:0)
我不太了解C#,但我认为您希望将泛型类型定义应用于方法而不是类。
public static void someMethod<T>(T param1)
{
//not sure where <T> definition goes in signature...
}
答案 3 :(得分:0)
你得到什么错误?它可能与方法签名以外的其他内容有关。这对我来说很好:
class SomeClass<T>
{
public static void someMethod(T param1)
{
Console.WriteLine(param1);
}
}
...
SomeClass<int>.someMethod(4);
答案 4 :(得分:0)
Tono你的代码是对的。根据布兰登所说的(并且不喜欢其他一些假装),你不必将你的方法设为通用的,因为它所属的全班已经是通用的......除非你想要该方法的类型参数与类的类型参数不同:
class SomeClass<T>
{
public static void someMethod<U>(U myobject)
{
}
}
显然,这绝对不是你想要的。
顺便说一句,在danyolgiax的回答中,编译器会引发一个错误,因为名为T的类的类型参数与名为T的方法的类型参数(严重)之间存在冲突名称。
确定您的错误来自其他地方。为什么不提到您收到的确切错误消息?这将是解决方案的一半。 : - )