使用此代码序列化对象时:
public object Clone()
{
var serializer = new DataContractSerializer(GetType());
using (var ms = new System.IO.MemoryStream())
{
serializer.WriteObject(ms, this);
ms.Position = 0;
return serializer.ReadObject(ms);
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到它没有复制关系.有没有办法让这种情况发生?
我正在读一本关于DI的书,它总是谈论DI框架"实例化对象图".为什么这样说而不是"实例化对象"?
我希望修剪作为对象图的一部分的所有字符串.
所以我有一个像这样的对象图
RootElement
- name (String)
- adjective (String)
- items ArrayOfItems
- getItems (List<Item>)
- get(i) (Item)
Item
- name (String)
- value (double)
- alias (String)
- references ArrayOfReferences
- getReferences (List<Reference>)
- get(i) (Reference)
Reference
- prop1 (String)
- prop2 (Integer)
- prop3 (String)
Run Code Online (Sandbox Code Playgroud)
对象图中表示的每个类的每个属性都有一个get和set对.理想情况下,String类型的每个字段都会被修剪,包括枚举集合中包含的任何子对象.对象图中没有包含循环.
是否有任何java库实现某种通用对象图访问者模式或String\Reflection实用程序库来执行此操作?
执行此操作的外部第三方库也可以,它不必是标准Java库的一部分.
对此问题提前道歉,尽管自iOS问世以来已经详细讨论过.但尽管我付出了最大的努力,但我仍然没有得到它.我可以拍摄的最接近的图像是"冻结和干燥的物体图形",这很好,但是当它归结为原始编程时,这无助于连接点.
因此,考虑到在找出问题之前你无法真正描述任何内容,让我们采用以下示例:
1)我有一个Xib文件,比如一个UIView,带有标签和imageView
2)我有一个来自UIView的classX,子类,它附加到IB的身份检查器中的Xib.IB连接和IB操作在连接检查器中连接到此类.此类将IB/IA声明为属性.
3)我有一个UIViewController,由classVC表示.在这个类中,我实例化1)使用标准[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];
4)classX和classVC通过自定义委托,标准内容进行通信.
问题:
a)XIB文件的所有者是什么.老实说,我不知道.
b)我为主[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];人参数添加了什么,最重要的是,为什么?
当对象图解冻并浇水时,不应该运行时连接Outlets在2)中定义的那么在这种情况下文件所有者的重点是什么?
要么
如果XIB文件奥特莱斯没有连接到任何东西,没有"文件的所有者"的意思是"我是一个包含所有必需的网点,使得类的实例,并解压缩XIB之间的连接可以使类?(这就是为什么我不得到它,因为如何建立关联???)
就是这样了.就像以前一样愚蠢.
编辑:我不同意其他答案同样有效的事实.我理解他们的意思,但到目前为止,我还没有理解所有者参数对于我描述的情况应该具有什么,最重要的是,为什么.
这是我在这个网站上提出的第一个问题,如果我错过了什么,请原谅我.
我在使用JSON.NET反序列化复杂对象图时遇到了一些问题.我的类层次结构(简化)如下:
public abstract class BusinessObjectBase
{
protected BusinessObjectBase(SerializationContext context)
{
}
}
public class TestBusinessObject : BusinessObjectBase
{
protected TestBusinessObject(SerializationContext context)
: base(context)
{
}
public NestedObject InnerObject { get; set; }
}
public class NestedObject : BusinessObjectBase
{
protected NestedObject(SerializationContext context)
: base(context)
{
}
}
Run Code Online (Sandbox Code Playgroud)
这些类没有默认的ctor,而是一个专用的自定义反序列化ctor(除了带参数的其他公共ctor),如示例所示.要创建一个实例,我编写了一个自定义创建转换器,如下所示:
internal class BusinessObjectCreationConverter : CustomCreationConverter<BusinessObjectBase>
{
public override bool CanConvert(Type objectType)
{
return typeof(BusinessObjectBase).IsAssignableFrom(objectType) && !objectType.IsAbstract;
}
public override BusinessObjectBase Create(Type objectType)
{
var businessObject = objectType.CreateUsingDesrializationConstructor<BusinessObjectBase>();
return businessObject;
}
} …Run Code Online (Sandbox Code Playgroud) 所以我本周末花了很多时间在Mortar和Flow上,我想我终于完成了大部分工作.我发现它比我原先想象的要复杂一点,主要是因为我还没有完全理解Dagger的ObjectGraph Scoping,Mortar非常依赖它.我在Dagger的网站上已经阅读了尽可能多的内容,但是我发现这个主题的信息在与Dagger特别相关时缺乏.
所以我有几个问题:1.我看到他们对@ Singleton的范围的例子:
@Layout(R.layout.screen_friend)
public class FriendScreen implements Blueprint {
@Override public String getMortarScopeName() {
return getClass().getName();
}
@Override public Object getDaggerModule() {
return new Module();
}
@dagger.Module(
injects = FriendView.class
)
static class Module {
}
@Singleton
public static class Presenter extends ViewPresenter<TestView> {
@Inject
public Presenter() {
Log.d("FriendScreen", "Friend Presenter Created");
}
@Override protected void onLoad(Bundle savedInstanceState) {
super.onLoad(savedInstanceState);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Presenter是否专门针对此模块,因为它是一个内部类?2.如何确保仅在此对象图中创建它的实例而不是全局应用程序对象图?2.如果演示者太大了,我想把它移到它自己的独立课程怎么办?我如何将其范围仅限于此模块?3.我注意到他们示例中的某些Module类是静态的,而其他类则不是.这对范围界定有什么影响吗?4.我在哪里可以阅读更多内容以更好地理解Dagger的对象图.我需要更好地理解includes,inject,addsTo以及如何在ObjectGraph创建中使用它们等:
@dagger.Module( //
includes = ActionBarModule.class,
injects = MainView.class,
addsTo = ApplicationModule.class, //
library …Run Code Online (Sandbox Code Playgroud) 有一个类Company,它引用了另一个Company表示的实例parent.比方说,有四家公司c1,c2,c3和c4和c2,c3,c4有母公司设置c1.
例如:
public class Company {
public Company parent;
public Company() { }
public Company(Company parent) {
this.parent = parent;
}
public static void main(String[] args) {
Company c1 = new Company();
Company c2 = new Company(c1);
Company c3 = new Company(c1);
Company c4 = new Company(c1);
}
Run Code Online (Sandbox Code Playgroud)
如果我们设置c2为以下的母公司c1:
c1.parent = c2;
Run Code Online (Sandbox Code Playgroud)
然后它将在公司层次结构中创建一个Cyclomatic …
任何人都知道为什么我的一些json元素被反斜杠(\)转义而其他人没有?
{"first":"John","last":"Smith","dogs":"[{\"name\":\"Rex\",\"breed\":\"Lab\"},{\"name\":\"Spot\",\"breed\":\"Dalmation\"},{\"name\":\"Fido\",\"breed\":\"Terrier\"}]"}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望他们中没有人逃脱......
这是通过覆盖as_json两个模型生成的.人has_many狗.
#models/person.rb
class Person < ActiveRecord::Base
has_many :dogs
def as_json(options={})
{
:first => first,
:last => last,
:dogs => dogs.to_json
}
end
end
#models/dog.rb
class Dog < ActiveRecord::Base
belongs_to :people
def as_json(options={})
{
:name => name,
:breed => breed
}
end
end
Run Code Online (Sandbox Code Playgroud) 如果您有一个引用其他对象的对象实例A(例如实例B和C),并且您将A二进制序列化为文件,会发生什么?您现在有包含A,B和C的序列化数据吗?
它是如何工作的?如果我反序列化数据,我会得到什么?A,B和C ??
(随意包括内部工作原理解释).
检测到类型为“...”的属性“...”的自引用循环。路径“[4]....[0]”。
我已将此添加到我的Startup.cs:
services.AddMvc()
.AddJsonOptions(opt =>
opt.SerializerSettings.ReferenceLoopHandling =
ReferenceLoopHandling.Ignore
);
Run Code Online (Sandbox Code Playgroud)
还有什么可能导致参考循环错误?
编辑:在评论中回答问题......受影响的课程是:
public partial class GuidingSymptom
{
public GuidingSymptom()
{
VideosGuidingSymptoms = new HashSet<VideosGuidingSymptoms>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[MaxLength(70)]
[Required]
public string Name { get; set; }
public string Description { get; set; }
public int SeverityId { get; set; }
public int? DiagnoseId { get; set; }
[InverseProperty("GuidingSymptom")]
public virtual ICollection<VideosGuidingSymptoms> VideosGuidingSymptoms { get; set; }
[ForeignKey("DiagnoseId")] …Run Code Online (Sandbox Code Playgroud) 我有一个 javascript 对象数组,其中的对象如下所示:
itemId
名称
parentItemId <== 没有父项的顶级项目具有空值
我想构建一个图形,其中父项包含子项数组,如果适用,这些子项具有子项数组。
什么是解决这个问题的好方法?
object-graph ×11
c# ×3
java ×2
json.net ×2
.net ×1
algorithm ×1
arrays ×1
asp.net-core ×1
dagger ×1
datacontract ×1
iboutlet ×1
ios ×1
javascript ×1
json ×1
loadnibnamed ×1
reflection ×1
string ×1
terminology ×1