在VB.NET中使用模块而不是具有共享成员函数的类是否被认为是可接受的做法?
我倾向于避免使用模块,因为他们觉得像Visual Basic 6.0中剩下的遗留物并不再适合.另一方面,使用模块和仅具有共享成员的类似乎没有太大区别.我不是经常需要它,但有时候它们会提供一个简单的解决方案.
我很想知道你是否有任何意见或偏好.
我搜索了一下,但没有找到满意的答案,所以我想听听你对此的看法.
我有几个工具,我必须不时更新和部署到几个服务器.源在SVN存储库中管理.
为了省去通过ftp或类似手段将二进制文件复制到生产服务器的麻烦(我无法在服务器上构建项目),我正在考虑在存储库中创建一个区域来提交它们.然后,我可以在需要时从svn服务器中简单地检索最新版本的可执行文件.
由于我不一定要在每次处理源代码时更新/提交二进制文件,因此我不会将二进制文件的文件夹创建为项目的子文件夹.然后(并且应该)承诺二进制文件是一个单独的,有意识的行为.
--- trunk
--- project1
--- project2
--- built
--- project1
--- project2
Run Code Online (Sandbox Code Playgroud)
据我所知,这个设置应该没有问题.我真正喜欢的是然后为源修订版和二进制文件提供单个标记,以便能够一次性检索所有属于一起的内容.
--- tags/project1/release2/
includes files from
--- trunk/project1/ revision 487 and
--- built/project1/ revision 488
Run Code Online (Sandbox Code Playgroud)
我能追求的是什么,我将如何实现它?我应该改为寻找解决这个问题的其他方法吗?
我有一种插件模型,其中各种复杂的用户控件存储在DLL中,并在运行时加载和实例化使用
Activator.CreateInstanceFrom(dllpath, classname).
Run Code Online (Sandbox Code Playgroud)
由于我正在加载其中的一些,我想在后台执行它,通过创建一个新线程来执行加载来保持我的UI响应.然后,控件将作为主窗体的父级,并在需要时显示.
这似乎工作正常 - 直到我尝试在其中一个用户控件上的任何嵌套控件上设置任何属性,例如在按钮的事件处理程序中,这会引发交叉线程异常.我确实通过每次访问属性时检查InvokeRequired都可以避免这种情况,但是在为用户控件编写代码时我宁愿不必担心(特别是因为还有其他人编写这些代码也可能并不总是记得).
所以我的问题是,是否有任何安全的方法来做我正在尝试的事情,或者我应该如何最好地在后台加载这些控件?或者它基本上是不可能的,我是否必须坚持主线程来创建控件?
我希望我提供的信息足以使我的情况清楚; 如果没有,我很乐意详细说明并提供代码示例.
假设我有以下代码:
interface ISomeInterface
{
void DoSomething();
void A();
void B();
}
public abstract class ASomeAbstractImpl : ISomeInterface
{
public abstract void A();
public abstract void B();
public void DoSomething()
{
// code here
}
}
public class SomeImpl : ASomeAbstractImpl
{
public override void A()
{
// code
}
public override void B()
{
// code
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我希望ASomeAbstractImpl.DoSomething()
密封(最终)方法,所以没有其他类可以实现它.因为代码现在SomeImpl
可以调用一个方法DoSomething()
并且可以调用它(它不会覆盖抽象类中具有相同名称的方法,因为它没有标记为虚拟),但我想切断实现的可能性在SomeImpl
课堂上这样的方法.
这可能吗?
我想向组件添加一个表示控件集合的属性,并具有一个集合编辑器,通过它我可以轻松地选择属于该集合的控件。VS确实几乎什么,我用下面的代码自动希望:
Private _controls As New List(Of Control)
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public ReadOnly Property SelectedControls() As List(Of Control)
Get
Return _controls
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
我得到默认的CollectionEditor,可以添加和删除控件,并且集合被序列化。
问题是我不想添加新控件,我想从表单上的其他可用控件中选择多个控件。有什么简单/标准的方法可以做到这一点,还是我必须编写自己的集合编辑器并运行控件集合?
尽管关于集合编辑器(UITypeEditors)和其他设计时主题的材料很多,但我找不到能够证明这种确切行为的任何链接,因此可以提供任何帮助。
.net user-controls design-time uitypeeditor collectioneditor
鉴于以下情况,我不希望编译器允许从base属性派生的多个属性,因为它们设置为AllowMultiple = false.事实上它编译没有问题 - 我在这里缺少什么?
using System;
[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=true)]
abstract class BaseAttribute : Attribute { }
sealed class DerivedAttributeA : BaseAttribute { }
sealed class DerivedAttributeB : BaseAttribute { }
class Sample1
{
[DerivedAttributeA()]
[DerivedAttributeB()]
public string PropertyA{ get; set; } // allowed, concrete classes differ
[DerivedAttributeA()]
[DerivedAttributeA()]
public string PropertyB { get; set; } // not allowed, concrete classes the same, honours AllowMultiple=false on BaseAttribute
}
Run Code Online (Sandbox Code Playgroud) 将解决方案从project.json迁移到.csproj时,解决方案中的一个项目的迁移将失败.
给出的错误是:
Migration failed. Unhandled Exception: System.ArgumentNullException: Value cannot be null. Parameter name: version at NuGet.Versioning.VersionRangeBase.Satisfies(NuGetVersion version, IVersionComparer comparer)
这个错误令人费解,因为该项目包含所有已成功迁移的其他24个项目,所有项目都具有类似的project.json内容.
这是project.json
{
"version": "1.0.0-*",
"dependencies": {
"EPPlus": "4.0.5",
"Microsoft.AspNetCore.Mvc.Abstractions": "1.0.1",
"Microsoft.AspNetCore.Mvc.Core": "1.0.1",
"Microsoft.AspNetCore.Mvc.ViewFeatures": "1.0.1",
"Microsoft.Azure.DocumentDB": "1.11.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.Extensions.Caching.Abstractions": "1.0.0",
"Microsoft.Extensions.Caching.Redis": "1.0.0",
"Microsoft.Extensions.Configuration.Ini": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.7",
"MongoDB.Driver": "2.3.0",
"NETStandard.Library": "1.6.0",
"RabbitMQ.Client": "4.1.1",
"Sendgrid": "6.3.4",
"System.Collections.Immutable": "1.3.0",
"System.Runtime": "*",
"WindowsAzure.ServiceBus": "3.4.4",
"WindowsAzure.Storage": "8.0.1",
"Unofficial.Ionic.Zip": "1.9.1.8"
},
"frameworks": {
"net461": {
"frameworkAssemblies": {
"System.Drawing": "4.0.0.0"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是完整的错误: …
我正在使用系统目录视图(例如 SYS.ALL_ OBJECTS、SYS.FOREIGN_KEYS 等)来获取有关我在 MS SQL 2005 中的数据库结构的信息。
MySQL (v. 5) 服务器是否有等效的功能/视图?
.net ×2
c# ×2
inheritance ×2
mysql ×2
asp.net-core ×1
attributes ×1
controls ×1
design-time ×1
interface ×1
sql-server ×1
svn ×1
system-views ×1
tags ×1
uitypeeditor ×1
vb.net ×1
winforms ×1