小编kha*_*osh的帖子

在另一个项目/命名空间中使用现有源代码

我在一个解决方案中有两个库项目(除了其他项目),它们必然需要共享某些类,但由于自动更新的原因必须保持独立.

对于共享的类,我理想地希望class.cs在两个库中使用相同的文件,这样我就不必一致地检查对类的更改是通过两个库传播的.

但是,这两个库的名称空间不同,因此每个库中包含类的文件需要不同的namespace classlib {}声明.

我正在使用git repo,如果有技术通过分支/合并操作来完成此操作.
目前正在使用VS2013.

我怎样才能做到这一点?


例:

library1.dll

namespace library1
{
    public class SharedClass
    {
        /// code must match SharedClass in libary2
    }
}
Run Code Online (Sandbox Code Playgroud)

library2.dll

namespace libary2
{
    public class SharedClass
    {
        /// code must match SharedClass in library1
    }
}
Run Code Online (Sandbox Code Playgroud)

c# git repository visual-studio visual-studio-2013

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

在 Application.Restart() 之前修改命令行参数

我的 winforms(不是 clickonce)应用程序采用只应处理一次的命令行参数。应用程序用于Application.Restart()在对其配置进行特定更改后重新启动自身。

根据MSDN 上的 Application.Restart()

如果您的应用程序在首次执行时最初提供了命令行选项,则 Restart 将使用相同的选项再次启动该应用程序。

这会导致命令行参数被多次处理。

有没有办法在调用之前修改(存储的)命令行参数Application.Restart()

.net c# restart command-line-arguments winforms

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

接口和对象反序列化

我有一个接口,它定义了一个可序列化为字节数组的类。

public interface IByteSerializable
{
    byte[] GetBytes();
}
Run Code Online (Sandbox Code Playgroud)

自然的伙伴是反序列化方法,我想返回一个实现IByteSerializable.

我正在纠结如何设计这样的界面。

这似乎没有意义:

public interface IByteSerializable
{
    byte[] GetBytes();
    IByteSerializable GetObject(byte[] bytes);
}
Run Code Online (Sandbox Code Playgroud)

因为 的实现GetObject()不能static并且使用虚拟IByteSerializable对象只是为了调用GetObject()方法来反序列化我所追求的实际对象是没有意义的。

这样做似乎也没有意义:

public interface IByteSerializableFactory
{
    IByteSerializable GetObject(byte[] bytes);
}
Run Code Online (Sandbox Code Playgroud)

一个工厂类可以解决这个问题,但这感觉会导致类爆炸。此外,给定子IByteSerializable类如何序列化然后反序列化的细节是相互依赖的,因此将它们放在同一个地方而不是两个不同的类中是有意义的。显然,反序列化给定IByteSerializable对象所需的确切过程完全取决于该对象的GetBytes()方法是如何编写的。

有没有通用的设计或模式可以用来解决这个问题?

c# oop interface

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

在运行时修改 app.config <system.diagnostics> 部分

我需要在运行时修改 a 的<configuration><system.diagnostics>部分,app.config以便我可以:

  1. CustomTraceListener<sharedListeners>元素下添加一个,这需要特殊的initializeData,只能在运行时确定。

  2. CustomTraceListener共享侦听器添加到<source><listeners>元素下的现有源。

  3. 将 持久化CustomTraceListener到其他程序集,这些程序集从配置文件加载其跟踪源和侦听器配置。

中的相关部分app.config目前看起来像这样:

<system.diagnostics>
  <sources>
    <source name="mysource" switchName="..." switchType="...">
      <listeners>
        <add name="console" />
        <add name="customtracelistener" /> /// need to add new listener here
      </listeners>
    </source>
  </sources>
  <sharedListeners>  
    <add name="console" type="..." initializeData="..." />
    <add name="customtracelistener" type="..." initializeData="..."> /// need to add custom trace listener here 
      <filter type="..." initializeData="Warning"/> /// with a filter
    </add>
  </sharedListeners>
  <switches>
    <add name="..." value="..." /> …
Run Code Online (Sandbox Code Playgroud)

.net c# configuration configurationmanager app-config

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

使用WebClient POST查询和下载文件

我可以在单个请求中将数据发布到 URI 并下载文件吗WebClient

TL;DR

我正在使用一个扩展类WebClient来联系我们的 PHP API 并下载文件。该类添加了一个CookieContainerWebClient启用 PHP 会话。

  1. WebClient.UploadValues()NameValueCollection向服务器发送查询以验证以下请求。
  2. WebClient.DownloadFile()下载文件。

这是 API 中唯一不太 RESTful 的部分,我更愿意将其移至单个无状态查询中。

我可以在调用之前WebClient.QueryString手动设置查询字符串,但该方法使用 GET 方法,并且 API 需要 POST 数据。 NameValueCollectionDownloadFile()

可以在调用之前将该方法设置为 POSTDownloadFile()吗?还有别的办法吗?

.net c# rest webclient

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

EF Core 将具有 null 属性的实体从外键检索到同一模型

当我查询数据库以检索记录时,并且模型包含一个作为同一类型的外键的属性,该属性返回null. 我做错了什么?

我有这个模型类:

public class Customer
{
    public int ID { get; set; }
    
    [ForeignKey("ParentID")]
    public virtual Customer Parent { get; set; }

    public List<Contact> Contacts { get; set; }

    [Required]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

与基础表:

CREATE TABLE [dbo].[Customer] 
(
    [ID]       INT IDENTITY (1, 1) NOT NULL,
    [ParentID] INT NULL,
    [Name]     NVARCHAR(MAX) NOT NULL,

    CONSTRAINT [PK_Customer] 
        PRIMARY KEY CLUSTERED ([ID] ASC),
    CONSTRAINT [FK_Customer_Customer_ParentID] 
        FOREIGN KEY ([ParentID]) REFERENCES [dbo].[Customer] ([ID])
)
Run Code Online (Sandbox Code Playgroud)

它是使用 EF Core 代码优先迁移生成的。 …

asp.net-mvc entity-framework-core asp.net-core-3.1

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