小编Eve*_*lie的帖子

通用代表C#

我试图弄清楚如何使泛型委托返回一个通用值.我的第一个非泛型场景看起来像这样.

    delegate int FirstDelegate(int i);
    static FirstDelegate method;

    static void Main(string[] args)
    {
        method = ReturnInt;
        int i = method(3);
    }

    static int ReturnInt(int i)
    {
        return i;
    }
Run Code Online (Sandbox Code Playgroud)

这里没问题.一切正常.然而,当我把它变成通用时,事情就会失去控制.

    delegate T FirstDelegate<T>(T i);
    static FirstDelegate<T> method; <--
Run Code Online (Sandbox Code Playgroud)

他已经在这里开始抱怨找不到类型或名称空间等.任何人都有任何关于如何使这个工作的想法?

编辑:我的真正目标是我有一个可以包含许多不同缓存对象的缓存.现在我想要一个通用的方法,这样我就可以通过这个方法得到所有对象.我可以让它返回对象或基类,但是我仍然必须在每个对象的任何地方使用它.

狗/猫的例子非通用的部分正在工作..通用..不是那么多

class Program
{
    static void Main(string[] args)
    {
        //Clientside
        Cache.method = GetAnimalOnClient;

        //not working
        Cache.methodGeneric = GetAnimalOnClientGeneric;

        var cat = Cache.GetCachedObj(AnimalType.Cat);
        var dog = Cache.GetCachedObj(AnimalType.Dog);

        //Want do
        vad dog = Cache.GetCachedObj<Dog>();
    }

    private static Animal GetAnimalOnClient(AnimalType type)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c# generics delegates

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

Reflection.Emit 实现接口并创建数组IL

我试图从一个接口创建一个代理类。在方法中,我只想收集对象数组中的所有参数并传递给已知方法。到目前为止,我已经设法让它在没有参数和返回类型的情况下工作。一旦我尝试创建我的数组,我就会收到“附加信息:公共语言运行时检测到无效程序。”.. 真的不知道如何从这里调试,IL 代码似乎是正确的(?)。

public class Program
{
    static void Main(string[] args)
    {
        var v = CreateProxy<IFoo>();
        v.DoSomething();
    }

    public static void TheMethod(object[] args)
    {

    }

    public interface IFoo
    {
        void DoSomething();
    }

    public static T CreateProxy<T>()
    {
        var interfaceType = typeof(T);

        AssemblyName assemblyName = new AssemblyName(string.Format("tmp_{0}", interfaceType.FullName));
        string moduleName = string.Format("{0}.dll", assemblyName.Name);
        string ns = interfaceType.Namespace;
        if (!string.IsNullOrEmpty(ns))
            ns += ".";

        var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName,AssemblyBuilderAccess.RunAndSave);
        var module = assembly.DefineDynamicModule(moduleName, false);
        var type = module.DefineType(String.Format("{0}Proxy_{1}", ns, interfaceType.Name), TypeAttributes.Class | TypeAttributes.AnsiClass |TypeAttributes.Sealed …
Run Code Online (Sandbox Code Playgroud)

c# proxy il runtime emit

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

使用Aurelia和Webpack时找不到模块'jquery-ui'

我试图让一个简单的日期选择器在aurelia工作,但我想我错过了一些非常基本的东西.

我在这里使用带有webpack的aurelia骨架

https://github.com/aurelia/skeleton-navigation/tree/master/skeleton-typescript-webpack

在此之后,我假设它安装下一个Jquery-ui.

http://ilikekillnerds.com/2016/02/using-jquery-ui-widgets-in-aurelia/

看这里一切看起来都很简单.但无论我做什么,我都会在这一行上找到"[ts]无法找到模块'jquery-ui'"

import { datepicker } from "jquery-ui";
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何让模块正常工作.

npm install jquery
npm install jquery-ui 
tsd install jquery
tsd install jqueryui
Run Code Online (Sandbox Code Playgroud)

还有什么遗漏吗?

既然我使用webpack,我不需要任何jspm魔法?还是这样我想?

编辑: 使用Webpack在Aurelia中添加模块依赖项

这看起来像

npm install jquery-ui --save
Run Code Online (Sandbox Code Playgroud)

我所需要的.还是同样的问题

编辑:完成datepicker.ts代码

import { customElement, bindable, inject } from "aurelia-framework";

import "jquery";
import { datepicker } from "jquery-ui";

@customElement('jquery-ui-datepicker')
@inject(Element)
export class JqueryUiDatepicker {
    @bindable id = '';
    @bindable name = '';
    @bindable options = {};

    constructor(Element) {
        this.element = Element;

        if (!this.id && this.name) { …
Run Code Online (Sandbox Code Playgroud)

jquery-ui typescript webpack aurelia

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

标签 统计

c# ×2

aurelia ×1

delegates ×1

emit ×1

generics ×1

il ×1

jquery-ui ×1

proxy ×1

runtime ×1

typescript ×1

webpack ×1