C# 如何将我的方法更改为泛型方法?我的代码有什么问题?
我有三个类,叫做Student、Worker、People,它们可能来自不同的项目。它们都有两个相同的属性:姓名、年龄。现在当我想将People更改为Student时,我必须编写一个名为ChangePeopleToStudent的方法,当我想将People更改为Worker时,我必须编写一个名为ChangePeopleToWorker的方法。我尝试使用泛型方法只编写一个方法,但它似乎是错误的。如何修复它 三级 我的双变方法 通用方法:如何修复C# 如何将我的方法更改为泛型方法?我的代码有什么问题?,c#,c#-4.0,generics,c#-3.0,C#,C# 4.0,Generics,C# 3.0,我有三个类,叫做Student、Worker、People,它们可能来自不同的项目。它们都有两个相同的属性:姓名、年龄。现在当我想将People更改为Student时,我必须编写一个名为ChangePeopleToStudent的方法,当我想将People更改为Worker时,我必须编写一个名为ChangePeopleToWorker的方法。我尝试使用泛型方法只编写一个方法,但它似乎是错误的。如何修复它 三级 我的双变方法 通用方法:如何修复 创建接口或基类-在我的示例中,我假设一个接口,例如:
创建接口或基类-在我的示例中,我假设一个接口,例如:
public interface IPerson
{
string Name { get; set; }
int Age { get; set; }
}
它应该由您的所有类实现。然后你就可以写:
public static T ChangePersonTo<T>(IPerson person)
where T : IPerson, new T()
{
return new T
{
Name = person.Name,
Age = person.Age
};
}
创建接口或基类-在我的示例中,我假设一个接口,例如:
public interface IPerson
{
string Name { get; set; }
int Age { get; set; }
}
它应该由您的所有类实现。然后你就可以写:
public static T ChangePersonTo<T>(IPerson person)
where T : IPerson, new T()
{
return new T
{
Name = person.Name,
Age = person.Age
};
}
NET不支持多重继承,因此T:Student,Worker不是一个合理的条件。如果你想成为学生或工作者,你需要定义一个通用的基类或接口,或者定义两个不同的方法 如果人应该是两者之间的共同类,您可以简化您的类:
public class Student : People
{
public int MathPoint { get; set; }
}
public class Worker : People
{
public string WorkPlace { get; set; }
}
public class People
{
public string Name { get; set; }
public int Age { get; set; }
public string Country { get; set; }
}
NET不支持多重继承,因此T:Student,Worker不是一个合理的条件。如果你想成为学生或工作者,你需要定义一个通用的基类或接口,或者定义两个不同的方法 如果人应该是两者之间的共同类,您可以简化您的类:
public class Student : People
{
public int MathPoint { get; set; }
}
public class Worker : People
{
public string WorkPlace { get; set; }
}
public class People
{
public string Name { get; set; }
public int Age { get; set; }
public string Country { get; set; }
}
你肯定说不出t:SomeClass,SomeUnrelatedClass在哪里,然后让它工作。您永远不会同时满足这两个条件。您需要创建一个公共基类或接口,该基类或接口包含名称和年龄,并让您的各种类从中继承。然后使用这个基类作为你的泛型方法,其中T:SomeBaseClass。非常确定你不能说T:SomeClass,SomeUnrelatedClass在哪里,然后让它工作。您永远不会同时满足这两个条件。您需要创建一个公共基类或接口,该基类或接口包含名称和年龄,并让您的各种类从中继承。然后使用该基类作为通用方法,其中T:SomeBaseClass.Person类是来自另一个名为project a的项目的json,没有接口,我只能在project B中序列化它。可能我应该创建一个接口。Person类是来自另一个名为project a的项目的json,没有接口,我只能在项目B中序列化它。可能是我应该创建一个接口。人们来自另一个项目,并通过json字符串传递。如果我使用您的代码,这似乎是错误的,因为学生和工人没有名为“Country”的属性@LYLYLYLY这只是一个示例-它可能不适合您的情况。关键是你需要一个基类或接口。人们来自另一个项目,并通过json字符串传递。如果我使用你的代码,这似乎是错误的,因为学生和工人没有名为“Country”的属性@LYLYLY这只是一个例子-它可能不适合你的情况。关键是您需要一个基类或接口。