我有以下结构:
public enum MyTypes
{
Type1 = 1,
Type2 = 2,
Type3 = 3
}
public abstract class class1
{
int id;
string name;
MyType type;
}
public class class2 : class1
{
}
public class class3 : class1
{
}
public class class4 : class1
{
}
Run Code Online (Sandbox Code Playgroud)
现在我要做的是创建一个泛型方法,我想给它类型对象说类3,它将从类3创建对象并定义它的变量并返回它以便能够将它添加到列表中class1的
像那样
private class1 myFunction (MyType t , int id , string name)
{
T obj = new T();
obj.type = t ;
obj.id = id ;
obj.name = name;
return obj;
}
Run Code Online (Sandbox Code Playgroud)
如何创建这种通用方法?
请尽快帮助我
提前致谢
sta*_*ica 13
正如Danny Chen在他的回答中所说,你必须稍微修改你的类定义才能使它起作用,然后你可以做类似下面的事情:
public T myFunction<T>(int id, string name) where T : class1, new()
{
T obj = new T();
obj.id = id;
obj.name = name;
return obj;
}
Run Code Online (Sandbox Code Playgroud)
这个泛型方法需要T从中派生类型参数,class1并且还需要一个无参数构造函数 - 这就是它的where T : class1, new()意思.
由于id和name属性是通过class1基类定义的,因此您可以将它们设置为myFunction通过其参数传递的内容.
还有一些需要注意的事项class1:
class1一个接口而不是一个抽象类,因为它不包含任何功能.id,如果你真的想要能够访问它们name,type需要公开.public.考虑使用属性代替此目的.| 归档时间: |
|
| 查看次数: |
8302 次 |
| 最近记录: |