Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回传递给类的类型的对象_C#_Generics_Types - Fatal编程技术网

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

C# 返回传递给类的类型的对象,c#,generics,types,C#,Generics,Types,假设我有这个班 class SomeClass<T> { public static void someMethod(T param1) // this gives an error // I have to do something like (var param1) { // ... // ... } } class-SomeCla

假设我有这个班

class SomeClass<T>
{

    public static void someMethod(T param1) // this gives an error
                                            // I have to do something like (var param1)

    {
        // ...
        // ...
    }
}
class-SomeClass
{
public static void someMethod(T param1)//这给出了一个错误
//我必须做一些类似(var param1)的事情
{
// ...
// ...
}
}
如何要求param1的类型为T,以便我可以按以下方式调用该方法:

SomeOtherClass object1 = new SomeOtherClass();
SomeClass<SomeOtherClass>.someMethod(object1);
SomeOtherClass object1=newsomeotherclass();
SomeClass.someMethod(object1);

只需使用通用方法即可

public static void SomeMethod<T>(T param1) ...
publicstaticvoidsomethod(T参数1)。。。
class SomeClass
{
公共静态方法(T myobject)
{
}
}
我对C不太了解,但我认为您应该将泛型类型定义应用于方法而不是类

public static void someMethod<T>(T param1)
{
    //not sure where <T> definition goes in signature...
}
publicstaticvoidsomethod(T参数1)
{
//不确定签名中的定义在哪里。。。
}

您遇到了什么错误?它可能与方法签名以外的内容有关。这对我来说很好:

class SomeClass<T>
{
    public static void someMethod(T param1)
    {
        Console.WriteLine(param1);
    }
}
class-SomeClass
{
公共静态方法(T参数1)
{
控制台写入线(参数1);
}
}

SomeClass.someMethod(4);

t您的代码不正确。根据Brandon所说的(并且不喜欢其他的伪装),你不必让你的方法泛型,因为它所属的整个类已经是泛型的了。。。除非您希望此方法的类型参数与类的类型参数不同:

class SomeClass<T>
{
     public static void someMethod<U>(U myobject)
     {
     }
} 
class-SomeClass
{
公共静态方法(U myobject)
{
}
} 
这显然不是你想要的

顺便说一句,在danyolgiax的回答中,编译器将引发一个错误,因为类的类型参数T和方法的类型参数T(很糟糕)之间的名称冲突


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

方法sig上的
(var param1)
如何工作?如果您想添加限制,那么添加where T:SomeOtherClass
SomeClass<int>.someMethod(4);
class SomeClass<T>
{
     public static void someMethod<U>(U myobject)
     {
     }
}