返回传递给类的类型的返回对象

时间:2011-05-24 00:35:33

标签: c# generics types

假设我有班级

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);

5 个答案:

答案 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的方法的类型参数(严重)之间存在冲突名称。

确定您的错误来自其他地方。为什么不提到您收到的确切错误消息?这将是解决方案的一半。 : - )