小编Pet*_*nge的帖子

从C#类型变量初始化通用变量

我有一个类,它将Generic Type作为其初始化的一部分.

public class AnimalContext<T>
{
    public DoAnimalStuff()
    {
        //AnimalType Specific Code
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在能做的是

AnimalContext<Donkey> donkeyContext = new AnimalContext<Donkey>();
AnimalContext<Orca> orcaContext = new AnimalContext<Orca>();
Run Code Online (Sandbox Code Playgroud)

但我需要/想要做的是能够声明一个AnimalContext初始化为只在运行时知道的类型.例如,

Animal a = MyFavoriteAnimal(); //returns an instance of a class 
                               //implementing an animal
AnimalContext<a.GetType()> a_Context = new AnimalContext<a.GetType()>();
a_Context.DoAnimalStuff();
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?我似乎无法在网上找到答案.

c# generics

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

自我更新申请

我对这个小组有一个普遍的问题.我即将为我的团队启动一个大项目,我怀疑,我们将作为一个桌面应用程序(我通常是我的应用程序前景中的网络人员,但我愿意改变.)

我最担心的是,当需要进行更改时,公司当前的桌面应用程序已经成为维护或更重要的分配方式的痛苦.所以我想开发一些东西,促使用户(我们的员工)在他们的计算机上过时更新软件.

那些之前已经做过这件事的人,我将不胜感激任何关于需要注意的陷阱的建议.此外,我会对任何人发现有助于解决类似要求的在线资源感兴趣.

谢谢.

编辑:我意识到我很糟糕!我忘了提一些最重要的细节.它将是一个使用.NET框架编写的Window应用程序,面向Win XP及更高版本.

.net desktop-application

8
推荐指数
2
解决办法
3807
查看次数

代码优先实体框架具有多对多的多个集合

我在这里有另一个实体框架问题.我有一个名为Book的复杂对象,该对象有许多类型为Contributor的集合,例如Writer,Letterer,Colorist等.但贡献者不一定是特定角色的范围.因此,相同的贡献者(具有相同的ContributorId)可以是Writer和Colorist.

public Book {
        public ICollection<Contributor> Writers { get; set; }
        public ICollection<Contributor> Artists { get; set; }
        public ICollection<Contributor> Pencilers { get; set; }
        public ICollection<Contributor> Inkers { get; set; }
        public ICollection<Contributor> Colorists { get; set; }
        public ICollection<Contributor> Letterers { get; set; }
        public ICollection<Contributor> CoverArtists { get; set; }
        public ICollection<Contributor> OtherContributors { get; set; }
}

public Contributor {
     public int ContributorId { get; set; }
     public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我遇到了麻烦,查看我在这里和其他网站上找到的例子,确定我将如何表示合适的模型.我希望Db …

ef-code-first entity-framework-5

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

构建组合矩阵

我确信这已被问了一百万次,但是当我搜索所有的例子都不太合适时,所以我想我还是应该问它.

我有两个数组,每个数组总共包含6个项目.例如:

string[] Colors=
    new string[] { "red", "orange", "yellow", "green", "blue", "purple" };

string[] Foods=
    new string[] { "fruit", "grain", "dairy", "meat", "sweet", "vegetable" };
Run Code Online (Sandbox Code Playgroud)

在这两个阵列之间,有36种可能的组合(例如"红色水果","红色颗粒").

现在我需要进一步将这些组合成六组唯一值.

例如:

meal[0]=
    new Pair[] { 
        new Pair { One="red", Two="fruit" }, 
        new Pair { One="orange", Two="grain" }, 
        new Pair { One="yellow", Two="dairy" }, 
        new Pair { One="green", Two="meat" }, 
        new Pair { One="blue", Two="sweet" }, 
        new Pair { One="purple", Two="vegetable" } 
    };
Run Code Online (Sandbox Code Playgroud)

在哪里吃饭

Pair[][] meal;
Run Code Online (Sandbox Code Playgroud)

在我的"餐"列表中不能重复任何元素.因此,只有一个"红色"项目和一个"肉"项目等.

我可以根据前两个数组轻松创建对,但我在如何最好地将它们组合成唯一组合方面做了一个空白.

c# algorithm combinations permutation matrix

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

决定源控制软件

我目前在家里和计算机上的计算机上本地使用Perforce,我很高兴.但我想与我的同事分享SCM Love,我们即将(可能)添加第三个开发人员.随着第三人的加入,我们无法继续使用Perforce的免费版本.我并不反对付款,但900美元的座位对于我工作的公司来说太陡了.

现在,我知道在StackOverflow上有一个强大的SVN跟随者,我尊重这一点.但是当我以前调查它时,我并不关心某些方面.例如在Perforce中,如果我尝试签入需要同步或合并的文件,它会在签入之前提示我这样做,并且我得到一个可视工具来控制合并.IIRC,在SVN中,当您签入文件时,它会自动为您合并,这可能不会产生与您期望的完全相同的后果.不过,我承认我可能会错误地记住这一点.

另外,我似乎记得SVN是基于文件夹而不是基于文件的?在我目前的工作环境中,这可能非常可怕,我继承了一些没有文件夹结构的应用程序.

当然,它绝对必须插入Visual Studio 2008.

鉴于这些要求,您是否仍会推荐SVN,还是会推荐其他产品?

svn version-control perforce visual-studio-2008

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

完全仲裁C#问题

假设您有一个对象,为了示例,我们将调用ScoreHotChicksEngine.并且说ScoreHotChicksEngine的构造函数期望传递一个IDataReader,其中包含属于Lonely Geeks的评分热门小鸡的属性值.

ScoreChicksEngine(IDataReader reader);
Run Code Online (Sandbox Code Playgroud)

好的,这是我想收集的信息......

作为开发人员,您会发现在传递给ScoreChicksEngine之前必须先阅读读者会更有用

IDataReader = command.ExecuteReader();
reader.Read();
ScoreChicksEngine SCE = new ScoreChicksEngine(reader);
Run Code Online (Sandbox Code Playgroud)

或者你会假设引擎本身会调用该函数并可能处理空值?

IDataReader  = command.ExecuteReader();
ScoreChicksEngine SCE = new ScoreChicksEngine(reader);
if (SCE.HasReaderData()) doSomething();
Run Code Online (Sandbox Code Playgroud)

c# architecture

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

ASP.NET 哨兵配置

我有一个 ASP.NET MVC (4.6.1) 网站,我们正在尝试使用 Sentry 服务对其进行监控。

根据安装文档,它只是说尽早初始化 Sentry,但他们示例的结构让我有理由怀疑是否没有更多内容。在我的 Gloabl.asax.cs 文件中,我调用包含 Sentry 初始化的自定义模型类。这是该课程的副本:

public class SentryModel
    {
        public static void Configure()
        {
            var environment = ConfigurationManager.AppSettings["Environment"];

            //escape the method if we are in a development environment
            if (environment.Equals("development", StringComparison.CurrentCultureIgnoreCase))
                return;

            Assembly web = Assembly.GetExecutingAssembly();
            AssemblyName webName = web.GetName();
            string myVersion = webName.Version.ToString();
            string dsn_data = ConfigurationManager.ConnectionStrings["Sentry"].ConnectionString;

            using (SentrySdk.Init(o =>
            {
                o.Dsn = new Dsn(dsn_data);
                o.MaxBreadcrumbs = 50;
                o.Debug = true;
                o.Environment = environment;
                o.Release = myVersion;
                o.AttachStacktrace = true;
            })) …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc global-asax sentry

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

XPATH查询递归

我有一个带有节点的XML文档,它可以在同一类型的其他节点中递归显示.例如:

<root>
   <Categories>
   <Category>
      <CategoryId>1</CategoryId>
      <CategoryName>Cat 1</CategoryName>
      <ChildCategories>
          <Category>
               <CategoryId>3</CategoryId>
               <CategoryName>Cat 3</CategoryName>
          </Category>
      </ChildCategories>
   </Category>
   <Category>
        <CategoryId>5</CategoryId>
        <CategoryName>Cat 5 </CategoryName>
   </Category>
   </Categories>
</root>
Run Code Online (Sandbox Code Playgroud)

因此,我需要能够通过其CategoryID值查询特定的类别或子类别(甚至是孩子的孩子等).这在XPATH中可行吗?

TIA

xpath

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

安全上下文中的动态TSQL

我有一个数据库,其中登录数据库的主用户没有直接对任何表的权限.用户需要执行已明确授予它的存储过程.这涵盖了所需的任何简单的CRUD操作.但是现在,我需要动态执行SQL,但我希望在用户上保持相同的安全级别.一个例子是

UPDATE [Table] SET [Column 1] = @Column1 
Run Code Online (Sandbox Code Playgroud)

但在这种情况下[第1列]及其值将在运行时设置.

我知道在存储过程中执行动态代码的唯一方法是使用sp_runsql,但是出于安全原因,创建使用sp_runsql执行动态查询的存储过程会失败(并且通常不是很聪明)

任何人都可以想到一种实现这种功能和安全性的方法吗?

t-sql sql-server dynamic-sql

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

c#图形创作

我有一些代码用于以编程方式创建一个文档发送到打印机.它是这样的:

private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev) 
{      
      ev.Graphics.DrawImage(pictureBox1.Image, 50, 100);

      string drawToday="Date      : "+strToday;
      string drawPolicyNo="Policy # : " + strPolicyNo;
      string drawUser="User     : " + strUser;
      Font drawFont=new Font("Arial",30);
      SolidBrush drawBrush=new SolidBrush(Color.Black);
      PointF drawPointToday=new Point(50,400);
      PointF drawPointPolicyNo=new Point(50,450);
      PointF drawPointUser=new Point(50,500);
      ev.Graphics.DrawString(drawToday,drawFont,drawBrush,drawPointToday);
      ev.Graphics.DrawString(drawPolicyNo,drawFont,drawBrush,drawPointPolicyNo);
      ev.Graphics.DrawString(drawUser,drawFont,drawBrush,drawPointUser);
}
Run Code Online (Sandbox Code Playgroud)

它的有效代码,但现在我需要执行相同的过程,而是将其写入图像文件,以便可以将其发送到浏览器并从那里打印.重用这段代码应该相对简单,但不幸的是,我正在挂起用于替换PrintPageEventArgument的绘图表面.

谢谢

编辑:谢谢我得到的我只需要另一个Graphics对象,但Graphics对象本身没有公共构造函数,所以我要找的是关于我需要什么对象才能创建Graphics对象的建议借鉴.我想也许是位图?位图当然是基于像素而不是基于点的,所以我不确定这是最好的介质.

c# printing graphics

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