相关疑难解决方法(0)

为什么扩展方法只允许在非嵌套的非泛型静态类中使用?

为什么扩展方法只允许在非嵌套的非泛型静态类中使用?在嵌套的通用静态类中考虑扩展方法是没用的吗?

c#

32
推荐指数
2
解决办法
5873
查看次数

为什么在通用静态类中声明扩展方法是不可能的?

我想为一些泛型类创建很多扩展方法,例如

public class SimpleLinkedList<T> where T:IComparable
Run Code Online (Sandbox Code Playgroud)

我已经开始创建这样的方法:

public static class LinkedListExtensions
{
    public static T[] ToArray<T>(this SimpleLinkedList<T> simpleLinkedList) where T:IComparable
    {
       //// code
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图使LinkedListExtensions类像这样通用时:

public static class LinkedListExtensions<T> where T:IComparable
{
    public static T[] ToArray(this SimpleLinkedList<T> simpleLinkedList)
    {
         ////code
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到"扩展方法只能在非泛型,非嵌套的静态类中声明".

而我正在试图猜测这种限制来自哪里并且没有任何想法.

编辑:仍然没有明确的问题愿景.似乎这只是因为某种原因没有实现.

c# generics extension-methods static

20
推荐指数
2
解决办法
7965
查看次数

automapper的通用扩展方法

public abstract class Entity : IEntity
{
    [Key]
    public virtual int Id { get; set; }
}

public class City:Entity
{
    public string Code { get; set; }
}

public class BaseViewModel:IBaseViewModel
{
    public int Id { get; set; }
}

public class CityModel:BaseViewModel
{
    public string Code { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的域和视图类...

用于映射扩展

public static TModel ToModel<TModel,TEntity>(this TEntity entity)
    where TModel:IBaseViewModel where TEntity:IEntity
{
    return Mapper.Map<TEntity, TModel>(entity);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用如下

City city = GetCity(Id);
CityModel model = f.ToModel<CityModel, …
Run Code Online (Sandbox Code Playgroud)

.net c# generics extension-methods automapper

5
推荐指数
2
解决办法
5051
查看次数

标签 统计

c# ×3

extension-methods ×2

generics ×2

.net ×1

automapper ×1

static ×1