小编joe*_*iks的帖子

循环DynamicObject属性

我正在尝试理解DynamicObject类型.发现这篇MSDN文章非常简洁明了,如何创建和使用DynamicObject:

http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx

本文包含一个继承自DynamicObject的简单DynamicDictionary类.

现在我想迭代我动态创建的DynamicObject属性:

dynamic d = new DynamicDictionary();
d.Name = "Myname";
d.Number = 1080;

foreach (var prop in d.GetType().GetProperties())
{
  Console.Write prop.Key;
  Console.Write prop.Value;
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.我想学习如何在不改变DynamicDictionary类的情况下做到这一点,因为我真的想学习如何将它用于从DynamicObject继承的各种现有对象.

需要反思吗?我肯定错过了什么...

c# dynamicobject

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

如何使用泛型类型参数传入func?

我喜欢将泛型类型转换器函数发送到方法,但我无法弄清楚如何做到这一点.

这是解释我想要实现的内容的无效语法,问题是我不知道如何与我的func一起指定泛型类型:

public void SomeUtility(Func<T><object,T> converter)
{
    var myType = converter<MyType>("foo");
}
Run Code Online (Sandbox Code Playgroud)

编辑(参见我在Lawrence评论中的讨论):通过"泛型转换器"我的意思是我想传入一个可以转换为任何强类型<T>(不是对象)的转换器,所以我的下一行方法可能是:

var myOtherType = converter<MyOtherType>("foo");
Run Code Online (Sandbox Code Playgroud)

我想作为参数传递的委托看起来像这样:

private delegate TOutput myConverterDelegate<TOutput>(object objectToConvert);
Run Code Online (Sandbox Code Playgroud)

这更像是一种语法/ C#探索,为了完成工作,我可能会使用一个接口,但我希望这可以用func/delegate来实现.

c# func

31
推荐指数
3
解决办法
4万
查看次数

Web2Py的良好开发环境设置

现在已经尝试了几天的Web2Py,我决定成为一名管理员.但是有一件事让我很担心,最终可能会成为一个障碍.我需要一个很好的开发环境和设置,我可以信任并提高效率.来自MS Visual Studio世界,我正在寻找具有良好自动完成/智能感知+功能的版本和部署.

我做了一些尝试在Eclipse中编辑我的代码,但它需要额外的设置来运行自动完成,并且为了调试我不知道是否可能.(注意到Eclipse中有一个Django项目模板,我必须说它有点诱人.)

Wing Ide有关于如何启动和运行web2py的说明,我正在测试那个.不是免费的,但与Windows世界相比非常便宜.

我还想要一个好的版本控制(hg)设置,最好是一个半自动的FTP部署方法.

Web2Py开发人员使用什么IDE,以及您的设置如何?

一个好的IDE中的项目的完整安装脚本将是非常棒的!(就像安装一样,只需点击一下即可使其100%运行).

Pycharm看起来不错,也许可以添加web2py支持 http://youtrack.jetbrains.net/issue/PY-1648

非常感谢!

eclipse ide web2py

27
推荐指数
5
解决办法
1万
查看次数

ui router onEnter中的访问范围或服务以检查访问权限(auth)

好的,所以我有一个url"/ securepage"的状态,每当用户试图访问它时我都需要检查它.所以我读到有一个我可以使用的onEnter功能.但我似乎无法抓住范围,也不能从那里获得服务.我究竟做错了什么?

        .state('securepage', {
            url: "/securepage",
            template: securepage.html,
            onEnter: function(){
                // if (!$scope.main.isAuthenticated) $state.go("/login");
                // if (!myLoginService.currentUser()) $state.go("/login");
Run Code Online (Sandbox Code Playgroud)

我认为当前的选项是使用解析和/或检查控制器中的身份验证.但是不能将auth检查更好地放在onEnter上吗?

angularjs angular-ui-router

27
推荐指数
3
解决办法
3万
查看次数

TypeScript编译并保留注释

我喜欢在生成的javascript文件中保留我的注释,默认情况下编译器会删除它们.那有一个tsc参数吗?(用例是保持///参考路径= ...用于chutzpah单元测试.)

typescript tsc

12
推荐指数
4
解决办法
7116
查看次数

这是ServiceStack Redis的有效用法吗?

我是Redis的新手(在托管服务中使用它),并希望将其用作列表的演示/沙箱数据存储.

我使用下面的代码.这个对我有用.但是对于一个拥有多个(最多100个)并发用户(对于少量数据 - 最多1000个列表项)的小型网站来说,这是一种有效(而非完全不好的做法)用法吗?

我正在使用静态连接和静态redisclient类型列表,如下所示:

public class MyApp
{   
    private static ServiceStack.Redis.RedisClient redisClient;

    public static IList<Person> Persons;
    public static IRedisTypedClient<Person> PersonClient;

    static MyApp()
    {
        redisClient = new RedisClient("nnn.redistogo.com", nnn) { Password = "nnn" };
        PersonClient = redisClient.GetTypedClient<Person>();
        Persons = PersonClient.Lists["urn:names:current"];
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做我有一个非常容易使用的持久数据列表,这正是我在构建/演示应用程序的基本块时所需要的.

foreach (var person in MyApp.Persons) ...
Run Code Online (Sandbox Code Playgroud)

添加新人:

MyApp.Persons.Add(new Person { Id = MyApp.PersonClient.GetNextSequence(), Name = "My Name" });
Run Code Online (Sandbox Code Playgroud)

我担心(目前)不是我在appstart上将完整列表加载到内存中的事实,而是我与redis主机的连接不遵循良好标准的可能性 - 或者是否存在其他问题我不是意识到.

谢谢

c# redis servicestack

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

动态数组| ExpandoObject | 使用压缩初始化语法

我试图在c#中使用DynamicObject,我需要一个动态数组:

var d = new dynamic[];
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.

编辑:请参阅下面的ExpandoObject.

但我也想用这个压缩的初始化新语法用一些数据填充该数组:

var d = new dynamic[] { 
  new {
   Name = "Some",
   Number = 1010
  },
  new {
   Name = "Other",
   Number = 2010
  }
 }
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,所有对象都获得非动态类型"对象",并且通过项目的循环将给出一个例外:

foreach (dynamic item in d)
{
  @item.Name
  @item.Number
}
Run Code Online (Sandbox Code Playgroud)

错误:'object'不包含'Name'的定义.我想我只是以错误的方式初始化数组项.如何添加动态对象?

编辑:新内容:

我意识到"动态"没有动态添加属性的能力.

我最好使用ExpandoObject,它将内部字典中的所有项目公开为属性.但不幸的是,ExpandoObject似乎不支持这种漂亮的压缩创建语法,编译器抱怨:

var d = new ExpandoObject[]{
new ExpandoObject(){
    Name="Nnn",
    Number=1080
    }
}
Run Code Online (Sandbox Code Playgroud)

所以答案可能只是:这是不可能的.

c# dynamic object-initializers

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

即使引用System.Core.Dll,System.Linq命名空间也会丢失

当我在Visual Studio 2010中打开我的Asp Net网站时,属性会说"Target Framework 3.5",但是当我尝试使用Linq命名空间时,编译器会抱怨它.

"找不到类型或命名空间名称'var'(您是否缺少using指令或程序集引用?)"

"命名空间'System'中不存在类型或命名空间名称'Linq'(您是否缺少程序集引用?)"

我手动引用了一些dll来解决我的问题,但仍然没有成功.

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Run Code Online (Sandbox Code Playgroud)

救命?:-)

linq assemblies aspnet-compiler

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

如果预期的计划报告电子邮件尚未到达,请收到警告

我(就像大多数科技管理员一样)我的收件箱中的预定服务有很多状态信息.但是,当一个服务电子邮件失败时,显然没有发送电子邮件.所以我只想要一个查看我的收件箱的服务说"嘿,这个服务昨天没有发送电子邮件报告 - 有些错误!".

应该在某个地方解决这个问题.也许Gmail(或其他一些电子邮件提供商)提供此类服务,这将是很棒的.

gmail scheduling reporting-services

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

批准测试和PDF

我可以将ApprovalTests与PDF一起使用吗?我尝试使用FileLauncher,但似乎相同的PDF在文件(位)级别略有不同.或者我错误地使用了它?

[TestMethod]
[UseReporter(typeof(FileLauncherReporter))]
public void TestPdf()
{
    var createSomePdf = PdfCreate();

    ApprovalTests.Approvals.Verify(new FileInfo(createSomePdf.FileName));

}
Run Code Online (Sandbox Code Playgroud)

c# testing approval-tests

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