小编100*_*101的帖子

分配给Delegate的通用方法

我对代表和通用方法感到有些困惑.

是否可以将委托分配给具有泛型类型参数的方法?

IE:

//This doesn't allow me to pass a generic parameter with the delegate.
public delegate void GenericDelegate<T>() 

someDelegate = GenericMethod;
public void GenericMethod<T>() where T : ISomeClass
{

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此委托传递给函数,该函数具有该方法所期望的接口的泛型类型,具有如下函数:

void CheckDelegate(GenericDelegate<ISomeClass> mechanism);
Run Code Online (Sandbox Code Playgroud)

所以我可以像这样使用委托:

someDelegate<ImplementsSomeClass>();
Run Code Online (Sandbox Code Playgroud)

c# generics delegates types interface

12
推荐指数
1
解决办法
4397
查看次数

将继承的类转换回基类

如果子类的实例被转换为继承的类,那么存储在子类的字段中的数据会发生什么?这如何在记忆中起作用?

public abstract class AchievementNode : PrioritizedData
{
public enum NodeTypes
{
    NONE   = 0x0,
    HEAD   = 0x1,
    TAIL   = 0x2,
    TYPE   = 0x4,
    DATA   = 0x8,
    LEVEL  = 0x16,
    GLOBAL = 0x32
}

public NodeTypes nodeType;

public virtual AchievementNode Init(NodeTypes type, params int[] enumData)
{
    nodeType = type;
    return this;
}
}

public class AchievementTypeNode : AchievementNode
{
public enum AchievementTypes {TIME,COMPLETION,UNLOCK,SOCIAL,ACTION};


public AchievementTypes AchievementType; 


public override AchievementNode Init(AchievementNode.NodeTypes type)
{
    base.Init(type);

    return (AchievementNode)this;
}
}
Run Code Online (Sandbox Code Playgroud)

c# memory inheritance casting

1
推荐指数
1
解决办法
725
查看次数

标签 统计

c# ×2

casting ×1

delegates ×1

generics ×1

inheritance ×1

interface ×1

memory ×1

types ×1