关于如何在面向对象的系统中最好地扩展,增强和重用代码,有两种思路:
继承:通过创建子类来扩展类的功能.覆盖子类中的超类成员以提供新功能.当超类想要一个特定的接口但是对它的实现不可知时,使方法抽象/虚拟以强制子类"填空".
聚合:通过获取其他类并将它们组合到一个新类中来创建新功能.为这个新类附加一个公共接口,以便与其他代码进行互操作.
每个的好处,成本和后果是什么?还有其他选择吗?
我看到这个辩论定期出现,但我认为它还没有被问到Stack Overflow(虽然有一些相关的讨论).谷歌的结果也令人惊讶地缺乏.
我知道当你将一个子模块添加到git存储库时,它会跟踪由其sha1引用的该子模块的特定提交.
我试图找到存储此sha1值的位置.
在.gitmodules和.git/config文件只显示了子模块的路径,但不是的提交SHA1.
该混帐子模块(1)参考只讲一个的gitlink条目和gitmodules(5)参考不说这事,无论是.
我在C中创建了一个简单的列表API,我想通过Github发布它.我还不确定选择哪个许可证,因为麻省理工学院和GPL似乎对我有好处.
有没有办法在创建存储库后更改许可证?
有没有办法从命令行编译基于Eclipse的Java项目?
我正在尝试自动化我的构建(使用FinalBuilder而不是ant),而且我既不是Java也不是Eclipse专家.我可以通过直接的java命令行选项找出如何做到这一点,但Eclipse项目感觉就像浪费了很多精力.
如果无法通过命令行编译Eclipse项目,有没有办法从Eclipse中生成所需的java命令行?或者是否有一些我可以找到的文件来找到它在幕后进行的编译步骤?
伙计们,我正在寻找一个不包含蚂蚁的答案.让我重新讨论原始问题.......有没有办法从命令行构建Eclipse项目?
我不认为这是一个不合理的问题,因为我可以为visual studio做这样的事情:
devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"
Run Code Online (Sandbox Code Playgroud) 我可以看到人们一直在询问是否应该在下一版本的C#或Java中包含多重继承.有幸拥有这种能力的C++人说,这就像给某人一条绳子最终自我吊死.
多重继承有什么问题?有没有具体的样品?
我正在尝试使用JSon.Net库解析一些JSON.文档似乎有点稀疏,我对如何完成我需要的东西感到困惑.这是我需要解析的JSON的格式.
{
"displayFieldName" : "OBJECT_NAME",
"fieldAliases" : {
"OBJECT_NAME" : "OBJECT_NAME",
"OBJECT_TYPE" : "OBJECT_TYPE"
},
"positionType" : "point",
"reference" : {
"id" : 1111
},
"objects" : [ {
"attributes" : {
"OBJECT_NAME" : "test name",
"OBJECT_TYPE" : "test type"
},
"position" : {
"x" : 5,
"y" : 7
}
} ]
}
Run Code Online (Sandbox Code Playgroud)
我真正需要的唯一数据是对象数组中的东西.我是否有可能通过JSonTextReader之类的东西来解析它,只是拉出我想要的东西,比如OBJECT_TYPE和x和y位置?我似乎无法JSonTextReader以我想要的方式工作,而且我发现很少甚至没有使用它的例子.
看起来首先序列化然后使用LINQ与我的对象是理想的,我发现的每个例子都讨论首先序列化JSON,但我不确定如何为这个结构构建一个对象.特别是对象数组,它需要类似于属性和位置对象列表.我不知道如何编写我的对象,以便JSon.Net知道如何序列化它.
我以为我可以编写自己的简单解析器来将我需要的所有东西都拉到我创建的属性对象中,但我运气不好.
希望这一切都有意义,任何想法?
我正在做一个反思项目,现在我被卡住了.如果我有一个可以容纳List的"myclass"对象,那么如果属性myclass.SomList为空,是否有人知道如何获取下面代码中的类型?
List<myclass> myList = dataGenerator.getMyClasses();
lbxObjects.ItemsSource = myList;
lbxObjects.SelectionChanged += lbxObjects_SelectionChanged;
private void lbxObjects_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Reflect();
}
Private void Reflect()
{
foreach (PropertyInfo pi in lbxObjects.SelectedItem.GetType().GetProperties())
{
switch (pi.PropertyType.Name.ToLower())
{
case "list`1":
{
// This works if the List<T> contains one or more elements.
Type tTemp = GetGenericType(pi.GetValue(lbxObjects.SelectedItem, null));
// but how is it possible to get the Type if the value is null?
// I need to be able to create a new object of the …Run Code Online (Sandbox Code Playgroud) 我们正在创建一个XBAP应用程序,我们需要在单个页面中的不同位置具有圆角,并且我们希望有一个WPF Rounded Corner容器来放置一堆其他元素.有没有人对我们如何才能最好地完成这项工作有一些建议或示例代码?使用样式或创建自定义控件?
我最近学习了Ruby编程语言,总而言之,它是一门很好的语言.但我很惊讶地发现它并不像我预期的那么简单.更准确地说,"最不惊讶的规则"对我来说似乎并不受到尊重(当然这是非常主观的).例如:
x = true and false
puts x # displays true!
Run Code Online (Sandbox Code Playgroud)
和着名的:
puts "zero is true!" if 0 # zero is true!
Run Code Online (Sandbox Code Playgroud)
你会警告一个Ruby新手的其他"问题"是什么?
在我的多线程ASMX web服务,我有我自己的类型SystemData的类别字段_allData它由数List<T>和Dictionary<T>标记为volatile.系统data(_allData)会偶尔刷新一次,我会通过创建另一个被调用的对象newData并用新数据填充它的数据结构来实现.当它完成后我就分配了
private static volatile SystemData _allData
public static bool LoadAllSystemData()
{
SystemData newData = new SystemData();
/* fill newData with up-to-date data*/
...
_allData = newData.
}
Run Code Online (Sandbox Code Playgroud)
这应该工作,因为赋值是原子的,并且具有对旧数据的引用的线程继续使用它,而其余的在分配之后具有新的系统数据.然而,我的同事说,volatile我应该使用,而不是使用关键字和简单的InterLocked.Exchange分配,因为他说在某些平台上,不能保证引用赋值是原子的.另外:当我宣布the _allData字段volatile的
Interlocked.Exchange<SystemData>(ref _allData, newData);
Run Code Online (Sandbox Code Playgroud)
产生警告"对易变场的引用不会被视为不稳定的"我应该怎么看待这个?
c# ×3
git ×2
oop ×2
aggregation ×1
api ×1
atomicity ×1
command-line ×1
eclipse ×1
generic-list ×1
github ×1
inheritance ×1
java ×1
json.net ×1
licensing ×1
parsing ×1
reflection ×1
ruby ×1
sha ×1
volatility ×1
wpf ×1