C# 在C中声明泛型静态方法#
有没有办法在C#中声明泛型静态方法?C# 在C中声明泛型静态方法#,c#,.net,C#,.net,有没有办法在C#中声明泛型静态方法? 例如: public static class Class<T,P> where T:class where P:class { public static T FromTtoP (this P ob) { ... } } public static class MyExtensions { public static T ConvertToT<T, P>(this P ob
例如:
public static class Class<T,P>
where T:class
where P:class
{
public static T FromTtoP (this P ob)
{
...
}
}
public static class MyExtensions
{
public static T ConvertToT<T, P>(this P ob)
where T : class
where P : class
{
// ...
}
}
公共静态类
T:在哪里上课
其中P:类
{
公共静态T fromtop(此P ob)
{
...
}
}
此代码不起作用。
我想从DTO映射到DAL,反之亦然
我试着让这个类非泛型
public static class Class
{
public static TDTO MapToDTO<TDTO, TDAL>(this TDAL dal)
where TDTO : class
where TDAL : class
{
}
}
公共静态类
{
公共静态TDTO映射到(此TDAL dal)
TDTO地点:班级
哪里有TDAL:class
{
}
}
我从“this”收到一条错误消息。在泛型类中不能有扩展方法。相反,将方法设置为泛型,并使类保持非泛型 例如:
public static class Class<T,P>
where T:class
where P:class
{
public static T FromTtoP (this P ob)
{
...
}
}
public static class MyExtensions
{
public static T ConvertToT<T, P>(this P ob)
where T : class
where P : class
{
// ...
}
}
公共静态类MyExtensions
{
公共静态T转换器(此P ob)
T:在哪里上课
其中P:类
{
// ...
}
}
当然,这并不能很好地工作-无法推断方法调用的参数,这使得这种方法毫无用处。什么是不工作?您是否收到任何异常或错误消息?你能更具体地说明你的问题吗?为什么你认为泛型是解决你问题的方法?你为什么要用扩展方法来实现这一点?你不是在声明泛型方法——你现在是在声明泛型类。你是为我编译的编辑和“我从
这个
得到错误消息”;你使用的是最新的C#编译器吗?另外:说“这个核心不工作”和“我收到一条错误消息”是没有帮助的。对发生的事情的完整描述(包括复制和粘贴任何消息等)更有用。我知道你在那里做什么了!但我可以告诉你要注意。如果DTO跨层使用,而DAL只是一层,那么DTO更像是一个接口。我知道这可能会增加混乱,但您正在尝试做一些有详细记录且概念上不容易的事情。欢迎使用OO设计:)这里的重要部分是不要忘记在方法名称后添加
,如Convert
。