小编Mic*_*l G的帖子

Active Directory - 检查用户名/密码

我在Windows Vista Ultimate SP1上使用以下代码来查询我们的活动目录服务器以检查域上用户的用户名和密码.

public Object IsAuthenticated()
{
    String domainAndUsername = strDomain + "\\" + strUser;
    DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, strPass);
    SearchResult result;
    try
    {
        //Bind to the native AdsObject to force authentication.         

        DirectorySearcher search = new DirectorySearcher(entry) { Filter = ("(SAMAccountName=" + strUser + ")") };

        search.PropertiesToLoad.Add("givenName"); // First Name                
        search.PropertiesToLoad.Add("sn"); // Last Name
        search.PropertiesToLoad.Add("cn"); // Last Name

        result = search.FindOne();

        if (null == result)
        {
            return null;
        }

        //Update the new path to the user in …
Run Code Online (Sandbox Code Playgroud)

c# ldap active-directory windows-vista

34
推荐指数
2
解决办法
7万
查看次数

预测base64编码字节的字节大小[]

我正在尝试预测base64编码字节数组的大小字符串表示.

我已经提出了下面的公式,但实际的长度encodedString比4大base64EncodedSize.

这里的整个想法是计算/预测给定的编码字符串大小byte[].我宁愿不将byte[] 转换为基数为64的字符串,只是为了确定它的长度.

FileInfo pdfFile = new FileInfo(@"C:\TEMP\1.pdf");

long originalSizeInBytes = pdfFile.Length;

String encodedString = Convert.ToBase64String(File.ReadAllBytes(pdfFile.FullName));

long base64EncodedSize = (originalSizeInBytes / 3) * 4;

----------------------------------------------------------------------------------
- Results -
-----------------------------------------------------------------------------------
  originalSizeInBytes                           913663  long
  base64EncodedSize                             1218216 long
  encodedString.Length                          1218220 int
  base64EncodedSize                             1218216 long
  encodedString.Length - base64EncodedSize      4       long
Run Code Online (Sandbox Code Playgroud)

c# base64

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

MVVM - 分离视图之间的通信

我正在试图弄清楚如何执行以下操作:

我有一个CustomerListViewModel包含一个ObservableCollection<Customer>

MainView 包含这些视图的实例:

  • CustomerListView - 创建一个实例 CustomerListViewModel
  • SearchView - 创建和实例 SearchViewModel

我的问题是,如何保持CustomerListView和SearchView分开.只有在选择了客户时才应显示SearchView.SearchViewModel的唯一依赖项应该是CustomerModel.如果没有从CustomerListViewModel中选择Customer,则不应显示SearchView.

我是否应该引入一个包含a CustomerListViewModelSearchViewModel它的新View/ViewModel,它可以保存对Selected的引用Customer并切换SearchView的显示?如果没有,我该怎么办呢?

我知道这个问题非常广泛,但我会很感激任何建议.

wpf mvvm

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

返回两个枚举之间的差异

我正在尝试确定两个集合之间的差异.

private ObservableCollection<SomeObject> _objectList = null;
private ObservableCollection<SomeObject> _cachedObjectList = null;
Run Code Online (Sandbox Code Playgroud)

SomeObject实现 IEquatable<SomeObject>

我正在使用以下内容来确定我的两个集合是否存在任何差异:

this._objectList.ToList().OrderBy(x => x.Id).SequenceEqual(this._cachedObjectList.ToList().OrderBy(x => x.Id));
Run Code Online (Sandbox Code Playgroud)
  • _cachedObjectList集合不会更改.
  • 您可以在_objectList集合中添加,删除或修改对象.

如何从两个集合中返回包含任何新添加,已删除或已修改对象的新列表.

任何帮助将不胜感激!

SomeObject的IEquatable实现:

public class SomeObject : IEquatable<SomeObject>
{
        public int GetHashCode(SomeObject object)
        {
            return base.GetHashCode();
        }

        public bool Equals(SomeObject other)
        {
            bool result = true;


            if (Object.ReferenceEquals(other, null))
            {
                result = false;
            }

            //Check whether the compared objects reference the same data.
            if (Object.ReferenceEquals(this, other))
            {
                result = true;
            }
            else
            {
                // if the reference isn't the …
Run Code Online (Sandbox Code Playgroud)

c# collections enumerable

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

重构 - 速度提升

我怎样才能使这个功能更有效率。目前运行时间为 6 - 45 秒。我已经在这个特定方法上运行了 dotTrace profiler,它的总时间在 6,000 毫秒到 45,000 毫秒之间。大部分时间花在“MoveNext”和“GetEnumerator”调用上。

时代的例子是

71.55% CreateTableFromReportDataColumns - 18, 533* ms - 190 calls
 -- 55.71% MoveNext - 14,422ms - 10,775 calls 
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来加快这个方法的速度吗?它被多次调用,并且秒数加起来:

    private static DataTable CreateTableFromReportDataColumns(Report report)
    {
        DataTable table = new DataTable();
        HashSet<String> colsToAdd = new HashSet<String> { "DataStream" };
        foreach (ReportData reportData in report.ReportDatas)
        {
            IEnumerable<string> cols = reportData.ReportDataColumns.Where(c => !String.IsNullOrEmpty(c.Name)).Select(x => x.Name).Distinct();

            foreach (var s in cols)
            {
                if (!String.IsNullOrEmpty(s))
                    colsToAdd.Add(s);
            }
        }

        foreach (string col in colsToAdd)
        { …
Run Code Online (Sandbox Code Playgroud)

c# linq refactoring profiling

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

访问ContextMenu中的ViewModel/DataConext

如何在ContextMenu中获取UserControl的原始DataContext.

下面的代码,你可以看到DataTemplate中有一个Button,它正确绑定.但是,在尝试绑定contextmenu的数据源时,我收到以下错误:

System.Windows.Data错误:4:不能用于与参照结合 '的RelativeSource FindAncestor,AncestorType =' System.Windows.Controls.TreeView找到源 'AncestorLevel = '1''.BindingExpression:路径= DataContext的; 的DataItem = NULL; target元素是'ContextMenu'(Name =''); target属性是'DataContext'(类型'Object')

我需要做什么才能让ContextMenu绑定到ViewModel?

================================================== =============================

ViewModel被分配给代码隐藏中视图的datacontext:

视图:

<TreeView ItemsSource="{Binding Clients}"
          cmd:TreeViewSelect.Command="{Binding SelectionChangedCommand}"
          cmd:TreeViewSelect.CommandParameter="{Binding RelativeSource={RelativeSource Self},Path=SelectedItem}">
    <TreeView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Name}">
                    <TextBlock.ContextMenu>
                        <ContextMenu DataContext="{Binding DataContext, 
                            RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}}">
                            <MenuItem Header="{Binding TestString}" />
                        </ContextMenu>
                    </TextBlock.ContextMenu>
                </TextBlock>

                <Button  DataContext="{Binding DataContext, 
                            RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}}"
                         Content="{Binding TestString}" Command="{Binding EditSelectedClientCommand}" />
             </StackPanel>
        </DataTemplate>
    </TreeView.ItemTemplate>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

视图模型:

public class ClientListViewModel : ViewModelBase
{
    public String TestString { 
        get { …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf mvvm prism-4

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

Directory.GetFiles保留上次访问时间

看来C#中的Directory.GetFiles()修改了文件的上次访问日期.我用谷歌搜索了几个小时,似乎无法找到解决这个问题的方法.无论如何要保留文件的所有MAC(已修改,已访问,已创建)属性?我正在使用Directory.GetDirectories(),Directory.GetFiles()和FileInfo.

此外,fi.LastAccessTime给出了奇怪的结果 - 日期是正确的,但是,时间是2分钟或几个小时.

Time of function execution: 10/31/2008 8:35 AM

Program Shows As              Last Access Time
0_PDFIndex.html               - 10/31/2008 8:17:24 AM
AdvancedArithmetic.pdf        - 10/31/2008 8:31:05 AM
AdvancedControlStructures.pdf - 10/30/2008 1:18:00 PM
AoAIX.pdf                     - 10/30/2008 1:18:00 PM
AoATOC.pdf                    - 10/30/2008 12:29:51 PM
AoATOC2.pdf                   - 10/30/2008 1:18:00 PM

Actual                        Last Access Time
0_PDFIndex.html               - 10/31/2008 8:17 AM
AdvancedArithmetic.pdf        - 10/30/2008 12:29 PM
AdvancedControlStructures.pdf - 10/30/2008 12:29 PM
AoAIX.pdf                     - 10/30/2008 12:29 PM
AoATOC.pdf                    - 10/30/2008 12:29 PM
AoATOC2.pdf                   - 10/30/2008 12:29 …
Run Code Online (Sandbox Code Playgroud)

c# lastaccesstime

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

如何删除指针数组

我一直在刷我的C++,我有一个关于删除新内存的快速问题.正如您在下面看到的,我有一个包含FileData*列表的简单类.我创建了一个数组来保存要推送到列表中的FileData对象.当ReportData被破坏时,我遍历列表并删除每个元素.我的问题是,当我使用reportData时,如何删除数组,以便我没有任何内存泄漏?

Report.h

class REPORTAPI ReportData {
public:

        ReportData()
        {
        }

        virtual ~ReportData()
        {
                printf("Starting ReportData Delete\n");
                for (list<FileData*>::iterator i = ReportFileData.begin(), e = ReportFileData.end(); i != e; )
                {
                    list<FileData*>::iterator tmp(i++);
                    delete *tmp;
                    ReportFileData.erase(tmp);
                }

                for (list<SupressionData*>::iterator i = ReportSupressionData.begin(), e = ReportSupressionData.end(); i != e; )
                {
                    list<SupressionData*>::iterator tmp(i++);
                    delete *tmp;
                    ReportSupressionData.erase(tmp);
                }

                ReportFileData.clear();
                ReportSupressionData.clear();

                printf("Finished ReportData Delete\n");
        }

        list<FileData *> ReportFileData;
        list<SupressionData *> ReportSupressionData;
}


extern "C" __declspec(dllexport) FileData* __stdcall createFileData(string fileName, long recordCount, long addPageCount)
{
        return …
Run Code Online (Sandbox Code Playgroud)

c++ memory

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

Long Regex - 你会怎么做?

嘿伙计们,我有一个很长的正则表达式,很难看.我想知道你是否可以帮助缩短它,所以它更易于管理.我承认,我不是一个正则表达的大师,我只是躲开了.如果你想出更好的东西(它甚至不需要更短),请解释你的推理,这样我就可以更好地理解你使用的技巧.

正则表达式:

^([a-zA-Z0-9# ]+)-([a-zA-Z ]*)([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z0-9_ ]+)-([a-zA-Z ~]+)([a-zA-Z0-9_ ]+)\.rpt$
Run Code Online (Sandbox Code Playgroud)

测试:

TESTFIX - ABCD 10118 - E008 - E009 - IXX - IXX - IXX - IXX - IXX - IXX - SX ~ 91.rpt
TESTFIX - EFGD 10118 - E008 - E009 - IXX - IXX - IXX - IXX - IXX - IXX - SX ~ 92.rpt
TESTFIX - 10118_14041 M - E008 - E009 - IXX - IXX - IXX - …
Run Code Online (Sandbox Code Playgroud)

c# regex

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

重构 - System.OutOfMemoryException

在尝试生成一些HTML报告时,我收到了'System.OutOfMemoryException'.

我如何重新考虑这个因素,以便将其缓冲到文件中,而不是将其全部读取到内存中,然后写入文件.

在数据表中有超过2000条记录,并且它已经在2000行内存不足.

DetailsUpdateTemplate包含多行html代码段.我假设我正在创建一个很大的字符串.

我正在使用C#,.NET 3.5

    internal static String SaveARSUpdateHTML(DataTable table, string fileName)
    {
        int recordCount = table.Rows.Count;

        Dictionary<String, object> templateCols = new Dictionary<string, object>();

        templateCols["Track"] = table.TableName;
        templateCols["ProdDate"] = DateTime.Now.ToShortDateString();
        templateCols["ProdTime"] = DateTime.Now.ToShortTimeString();
        templateCols["TotalRecords"] = recordCount;

        String detailOutput = String.Empty;
        for (int i = 0; i < table.Rows.Count; i++)
        {
            int ResultID = i + 1;
            DataRow row = table.Rows[i];
            String ReportDetails = DetailsUpdateTemplate;
            ReportDetails = ReportDetails.Replace(String.Format("{{{0}}}", "ResultID"), ResultID.ToString());
            foreach (DataColumn column in table.Columns)
            {
                String value = row[column.ColumnName].ToString(); …
Run Code Online (Sandbox Code Playgroud)

c# out-of-memory

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

fabric.IText到SVG为每个字符生成TSPAN

<tspan>当特殊格式未应用于文本时,如何强制fabricjs IText对象生成单个文本?

fabric.IText()使用初始文本值创建新对象实例时,svg输出与预期一致.

例如:

    var textObject = new fabric.IText('{{variable2}}', {
        left: options.e.layerX,
        top: options.e.layerY,
        fontFamily: 'helvetica',
        fontSize: 10,
        angle: 0,
        fill: '#000000',
        scaleX: 1,
        scaleY: 1,
        fontWeight: '',
        originX: 'left',
        hasRotatingPoint: true,
        centerTransform: true
    });

    canvas.add(textObject);
Run Code Online (Sandbox Code Playgroud)

canvas.toSVG()调用后产生以下输出,这是我所期望的.

<text font-family="helvetica" ...>
     <tspan x="-27" y="2.246" fill="#000000">{{variable2}}</tspan>
</text>
Run Code Online (Sandbox Code Playgroud)

但是,当您编辑IText文本值时,它会生成一个文本对象,每个字符都有一个tspan.

将画布编辑器中的textObject文本修改为"test {{variable2}}" 生成以下svg输出:

<text xmlns="http://www.w3.org/2000/svg" font-family="helvetica" font-size="10" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: #000000; fill-rule: nonzero; opacity: 1;">
    <tspan x="-37" y="2.2459999999999996" style="stroke: none; …
Run Code Online (Sandbox Code Playgroud)

javascript canvas fabricjs

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

列出泛型和铸件

我有两个类:Media和Container.

我有两个清单List<Media>List<Container>

我将这些列表传递给另一个函数(一次一个);

它可以是一个或另一个;

什么是检查列表的"模板"类型的正确方法,所以我可以根据列表类型调用一个相关的方法?

或者我应该尝试转换到List <>并将Try/Catch块放在它周围?

    Object tagObj = mediaFlow1.BackButton.Tag;

    if (tagObj == Media)
       //do this
    else if (tagObj == Container)
        //do this
    else
        throw new Exception("Not a recognized type");
Run Code Online (Sandbox Code Playgroud)

c# generics casting

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

如何有效地拆分字符串,将其添加到List,并转换为Double?

我有一些基本代码可以完成我想要它做的事情,但我认为它可以缩写/清理.不过,我正在努力解决这个问题.

代码如下:

List<string> positions = new List<string>();
List<string> players = new List<string>();

foreach (string element in fractionedList)
{
   positions.Add(element.Split(',')[2]); 
   positions.Add(element.Split(',')[3]); 
   positions.Add(element.Split(',')[4]); 

   players.Add(element.Split(',')[5]); 
   players.Add(element.Split(',')[6]); 
   players.Add(element.Split(',')[7]);
} 

List<double> convertedPositions = positions.Select(x => double.Parse(x)).ToList();
List<double> convertedPlayers = playerss.Select(x => double.Parse(x)).ToList();
Run Code Online (Sandbox Code Playgroud)

作为参考,我的fractionedList看起来像:

"string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12",
"string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12",
"string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12",
"string0,string1,string2,string3,string4,string5,string6,string7,string8,string9,string10,string11,string12",
Run Code Online (Sandbox Code Playgroud)

所以我试图拆分List的每个字符串实例,获取接下来的三个元素,然后将它们添加到新的List中,然后将该List转换为新的双精度列表.我想知道是否有更简洁的方法来处理Split方法.是否有相当于Take()?此外,这一切都可以在一个List创建中完成,而不是创建一个字符串列表,创建一个双打列表?

c# split

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