小编Ale*_*pka的帖子

是否可以使用条件属性来创建similliar调试器和运行时方法?

是否有可能创建2个具有相同方法名称的方法,传入值并使用条件属性返回并返回一些反条件

[Conditional("Debug")]
    private string StringGenerator()
    {
        Guid g = Guid.NewGuid();
        string guidString = Convert.ToBase64String(g.ToByteArray());
        guidString = guidString.Replace("=", "");
        guidString = guidString.Replace("+", "");
        return guidString;
    }


    [!Conditional("Debug")]// I know using '!' doesn't really work
    private string StringGenerator()
    {
        Guid g = Guid.NewGuid();
        string guidString = Convert.ToBase64String(g.ToByteArray());

        return guidString;
    } 
Run Code Online (Sandbox Code Playgroud)

这样你就可以调用一个方法,并根据是否定义了"Debug",编译器会选择哪种方法?

谢谢

c# conditional-attribute

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

GUI task.wait与Console或ThreadPool的死锁

我目前正在深入阅读C#(第3版),其中一个警告是使用带有task.wait的GUI线程是危险的,因为它可能导致死锁.但它不是ThreadPool或Console的问题.我的问题是为什么运行task.wait的线程没有死锁,所以对于下面的代码(取自书),即使控制台应用程序(后台)线程也不会使它成为陷阱,因为它会死锁.

public static void Main(string[] args = null)
{
        var source = new CancellationTokenSource();
        var task = TestInt(source.Token);
        source.CancelAfter(4000);
        Console.WriteLine("Status {0}",task.Status);
        try
        {
            task.Wait();
        }
        catch (AggregateException e)
        {
            Console.WriteLine("Caught {0}",e.InnerExceptions[0]);
        }
        Console.WriteLine("Final Status: {0}",task.Status);
        Console.ReadKey();
    }

    public static async Task TestInt(CancellationToken token, double start = 1)
    {

        await Task.Delay(TimeSpan.FromSeconds(30), token);
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

c# task

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

使用IOC Container创建存储库层单例

我公司的MVC解决方案使用IOC容器将Caching/Repository层注入控制器.这是非常昂贵的,因为目前我们每次创建控制器时都会生成新类(当缓存层对象已经引用了repo层时,可以达到数千个对象 - 并且所有这些类都被创建).我知道Singleton模式由于很多原因而非常不喜欢(参见为什么Singletons是邪恶的)但是有没有理由不将IOC Container设置为缓存/ repo层对象的单例?

谢谢.

c# singleton ioc-container

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

无法转换类型为'System.Data.Objects.ObjectQuery`1 .....的对象以输入'DatabaseModel1 ......'.ASP

您好我试图为任何注册我的网站的用户分配一个默认组.由于该组的管理员ID是管理员,因此我在数据库中查询管理员ID为我的管理员的组,然后将该组分配给用户.但是,抛出以下错误"无法将类型'System.Data.Objects.ObjectQuery`1 [DatabaseModel1.Group]'的对象强制转换为'DatabaseModel1.Group'."下面是代码

        Dim defaultGroup = (From group As Group In context.Groups
                     Where group.AdminID = ((From users As User0 In context.User0
                                            Where users.Name Like "Administrator"
                                            Select users.UserID).First)
                       Select group)

        currentUser.Groups.Add(defaultGroup)//the error is being thrown here
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激谢谢

linq asp.net entity-framework

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

使用反射来投射物体

我对反思有点新意,请原谅我,如果这是一个更基本的问题我正在用c#编写一个程序,并且我试图写一个通用的Empty或null checker方法到目前为止代码读取为

 public static class EmptyNull
    {
       public static bool EmptyNullChecker(Object o)
       {
           try
           {
               var ob = (object[]) o;
               if (ob == null || !ob.Any())
                   return true;
           }
           catch (Exception e)// i could use genercs to figure out if this a array but                  //figured i just catch the exception
           {Console.WriteLine(e);}
           try
           {
               if (o.GetType().GetGenericTypeDefinition().Equals("System.Collections.Generic.List`1[T]"))
               //the following line is where the code goes haywire
              var ob = (List<o.GetType().GetGenericArguments()[0].ReflectedType>)o;
               if (ob == null || !ob.Any())
                   return true;
           }
           catch (Exception e) …
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

存储大量对象

我正在构建一个C#应用程序,最终用户将没有任何sql数据库管理器.我需要一种存储大约300万个对象(大约10-20个字符串字段)的方法,以便程序可以导入信息.我已经尝试过二进制格式化但由于数据量很大而导致内存不足.有没有其他方法以快速和有效的方式存储对象?

谢谢

c#

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