我在一个解决方案中有两个库项目(除了其他项目),它们必然需要共享某些类,但由于自动更新的原因必须保持独立.
对于共享的类,我理想地希望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) 我的 winforms(不是 clickonce)应用程序采用只应处理一次的命令行参数。应用程序用于Application.Restart()在对其配置进行特定更改后重新启动自身。
根据MSDN 上的 Application.Restart()
如果您的应用程序在首次执行时最初提供了命令行选项,则 Restart 将使用相同的选项再次启动该应用程序。
这会导致命令行参数被多次处理。
有没有办法在调用之前修改(存储的)命令行参数Application.Restart()?
我有一个接口,它定义了一个可序列化为字节数组的类。
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()方法是如何编写的。
有没有通用的设计或模式可以用来解决这个问题?
我需要在运行时修改 a 的<configuration><system.diagnostics>部分,app.config以便我可以:
CustomTraceListener在<sharedListeners>元素下添加一个,这需要特殊的initializeData,只能在运行时确定。
将CustomTraceListener共享侦听器添加到<source><listeners>元素下的现有源。
将 持久化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) 我可以在单个请求中将数据发布到 URI 并下载文件吗WebClient?
TL;DR
我正在使用一个扩展类WebClient来联系我们的 PHP API 并下载文件。该类添加了一个CookieContainer以WebClient启用 PHP 会话。
WebClient.UploadValues()NameValueCollection向服务器发送查询以验证以下请求。WebClient.DownloadFile()下载文件。这是 API 中唯一不太 RESTful 的部分,我更愿意将其移至单个无状态查询中。
我可以在调用之前WebClient.QueryString手动设置查询字符串,但该方法使用 GET 方法,并且 API 需要 POST 数据。 NameValueCollectionDownloadFile()
可以在调用之前将该方法设置为 POSTDownloadFile()吗?还有别的办法吗?
当我查询数据库以检索记录时,并且模型包含一个作为同一类型的外键的属性,该属性返回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 代码优先迁移生成的。 …
c# ×5
.net ×3
app-config ×1
asp.net-mvc ×1
git ×1
interface ×1
oop ×1
repository ×1
rest ×1
restart ×1
webclient ×1
winforms ×1