我试图弄清楚如何使泛型委托返回一个通用值.我的第一个非泛型场景看起来像这样.
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) 我试图从一个接口创建一个代理类。在方法中,我只想收集对象数组中的所有参数并传递给已知方法。到目前为止,我已经设法让它在没有参数和返回类型的情况下工作。一旦我尝试创建我的数组,我就会收到“附加信息:公共语言运行时检测到无效程序。”.. 真的不知道如何从这里调试,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) 我试图让一个简单的日期选择器在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魔法?还是这样我想?
这看起来像
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)