小编Meh*_*ari的帖子

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

C#:泛型内没有投射?

虽然我可以将一个字符串向上转换为一个对象,但是我无法将IList字符串向上转换为IList对象.怎么会?现在该怎么做才能将所有项目都复制到一个新的IList?

static void ThisWorks()
{
     IList<object> list = new List<object>();
     list.Add("I can add a string since string : object");
}

static void ThisDoesNotWork()
{
     // throws an invalid cast exception
     IList<object> list = (IList<object>) new List<string>(); 

     list.Add("I'm never getting here ... why?");
}
Run Code Online (Sandbox Code Playgroud)

c# generics casting

4
推荐指数
2
解决办法
1077
查看次数

C#代码分析不喜欢受保护的静态s_Foo(CA1709,CA1707)

我通常m_private田野和s_前面的static成员面前添加一个.

用像这样的代码

protected static readonly Random s_Random = new Random ();
Run Code Online (Sandbox Code Playgroud)

我通过VS2008的代码分析得到以下警告:

  • CA1709:Microsoft.Naming:通过将其更改为"S"来更正成员名称"Bar.s_Random"中's'的大小写.
  • CA1707:Microsoft.Naming:从成员名称"Bar.s_Random"中删除下划线.

如何解决这个问题?我应该简单地删除s_?或者为此警告添加全局抑制?

编辑:我的公司缺乏编码标准,所以我可以为我的代码定义它们.(是的我懂...)

如果你认为s_一般应该删除,我很高兴你能提供官方消息来源.

c# code-analysis fxcop naming-conventions visual-studio-2008

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

将Dictionary <int,Enumerable>转换为Dictionary <int,Enumerable>反转内容

为了清楚起见,我们说我们有学生和班级,这是一个多对多的关系.

我有一个词典,其中键是学生ID,而Enumerable是一个类的集合(比如我们只有id),我想将它恢复为classId的词典,学生

Linq有办法做到这一点吗?我可以想办法用循环来做这个,但我确信有办法做到这一点.

.net c# linq dictionary

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

LinqToSql奇怪的行为

我有以下代码:


var tagToPosts = (from t2p in dataContext.TagToPosts
                                    join t in dataContext.Tags on t2p.TagId equals t.Id
                                    select new { t2p.Id, t.Name });
//IQueryable tag2postsToDelete;
foreach (Tag tag in tags)
{
    Debug.WriteLine(tag);
    tagToPosts = tagToPosts.Where(t => t.Name != tag.Name);
}
IQueryable tagToPostsToDelete = (from t2p in dataContext.TagToPosts
                                            join del in tagToPosts on t2p.Id equals del.Id
                                            select t2p);
dataContext.TagToPosts.DeleteAllOnSubmit(tagToPostsToDelete);
Run Code Online (Sandbox Code Playgroud)

where tagsList<Tag>- 构造函数创建的标签列表,因此它们没有id.我运行代码将一个刹车点放在Debug上,然后等待几个周期.然后我将WatchToPosts.ToList()放在Watch窗口中以便执行查询.在SQL事件探查器中,我可以看到以下查询:

exec sp_executesql N'SELECT [t0].[Id], [t1].[Name]
FROM [dbo].[tblTagToPost] AS [t0]
INNER JOIN [dbo].[tblTags] AS [t1] ON [t0].[TagId] = …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda linq-to-sql

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

C#MethodInfo getReturnType

我创建了一个MethodInfo的实例:

MethodInfo theMethod = typeof(Reciever).GetMethod("methodName", parameterTypes);
Run Code Online (Sandbox Code Playgroud)

现在我想知道theMethod的返回类型是否为void.怎么样?

.net c# reflection void methodinfo

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

功能参数最佳实践

我对函数参数的使用有疑问.

在过去,我总是编写我的代码,以便函数所需的所有信息都作为参数传递.即不使用全局参数.

然而,通过查看其他人的代码,没有参数的函数似乎是常态.我应该注意,这些是针对类的私有函数,并且作为参数传递的值实际上是该类的私有成员变量.

这导致更整洁的代码和我开始倾向于私人功能,但希望其他人的意见.

例如

Start();  
Process();  
Stop();  
Run Code Online (Sandbox Code Playgroud)

更整洁,更可读:

ParamD = Start(paramA, ParamB, ParamC);  
Process(ParamA, ParamD);  
Stop(ParamC);  
Run Code Online (Sandbox Code Playgroud)

它确实从方法的角度来打破封装,但不是从类的角度来看.

language-agnostic parameters function

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

我可以在powershell中这样做吗?阅读注册表,将二进制内容写入文件

这是C#代码.你能帮我把它翻译成powershell吗?

private static void Main(string[] args)
{
    byte[] buffer = (byte[]) Registry.LocalMachine.OpenSubKey(@"HARDWARE\ACPI\DSDT\HP____\8510x\00010000").GetValue("00000000");
    if (File.Exists("8510x.orig"))
    {
        Console.WriteLine("File 8510x.orig already exists.");
    }
    else
    {
        using (FileStream stream = new FileStream("8510x.orig", FileMode.CreateNew))
        {
            stream.Write(buffer, 0, buffer.Length);
            stream.Flush();
            stream.Close();
        }
        Console.WriteLine("Wrote 8510x.orig.");
    }
}
Run Code Online (Sandbox Code Playgroud)

.net registry powershell file stream

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

C#表达式求值为命名空间

MSDN文档声明"表达式是可以计算为单个值,对象,方法或命名空间的代码片段."

有人可以解释一下表达式评估命名空间意味着什么 - 这怎么可能?

编辑:修正错字

c# expression

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

如何使用Linq从ViewData.ModelState获取异常?

我编写了以下代码以从ASP.Net MVC中的ViewData.Modelstate属性中引出异常以及引用该属性的字符串键.我认为应该可以用Linq表达式做到这一点,但它完全让我感到困惑.

       var exceptions = new Dictionary<string, Exception>();
       foreach (KeyValuePair<string, ModelState> propertyErrorsPair in ViewData.ModelState)
       {
           foreach (var error in propertyErrorsPair.Value.Errors)
           {
               if (error.Exception != null)
               {
                   exceptions.Add(propertyErrorsPair.Key, error.Exception);
               }
           }
       }
Run Code Online (Sandbox Code Playgroud)

那么Linq的做法是什么?我猜它可能与SelectMany有关,但正如我所说,我无法弄清楚如何实现这一目标.

谢谢

c# linq asp.net asp.net-mvc

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