我有这样的界面:
public interface IDocument : ISerializable
{
Boolean HasBeenUploaded { get; set; }
void ISerializable.GetObjectData(SerializationInfo, StreamingContext) { }
}
Run Code Online (Sandbox Code Playgroud)
有三个文件继承自此,所有这些文件序列化都很好.但是在创建一个简单的Web服务时,它什么都不做,可以将它们上传到...
public class DCService : System.Web.Services.WebService
{
[WebMethod]
public Boolean ReceiveDocument(IDocument document)
{
DBIO io = new DBIO();
return io.InsertIntoDB(document); // does nothing; just returns true
}
}
Run Code Online (Sandbox Code Playgroud)
我试图运行它时得到这个:"无法序列化接口IDocument"
我不太清楚为什么这会成为一个问题.我知道有些人遇到了麻烦,因为他们不想强制子类来实现自定义序列化,但我确实如此,到目前为止它已经成功了.
编辑>如果我创建接受实现接口的对象的单个web方法,它工作正常,但这削弱了客户端/服务器之间的合同(并破坏了首先拥有接口的目的)
请考虑以下代码:
using (var ms = new MemoryStream())
{
using(var writer = BinaryWriter(ms))
{
writer.Write(/*something*/);
writer.Flush();
}
Assert.That(ms.Length > 0); // Throws ObjectDisposedException
}
Run Code Online (Sandbox Code Playgroud)
一方面,一次性物品应该处理它的资源; 我明白了,但另一方面,对象没有创建并且没有拥有这个资源,它提供了 - >调用代码应该对它负责......不是吗?
我想不出像这样的任何其他情况,但是对于任何接收一次性物品的类来自行处理它们的框架中它是否是一致的模式?
我必须在派生类中实现ISerializable(进行一些自定义序列化/反序列化),但父类被标记为[Serializable].序列化"工作"(我可以序列化和反序列化,没有运行时错误),但看起来基类数据没有被保留.
事实上我在派生类中实现GetObjectData否定了基类的序列化?如果是这样,我是否必须在基类中实现ISerializable,然后在派生类中调用base.GetObjectData(...)来保存数据,或者有比编写info.AddValue(...)更好的方法100次?
编辑>谢谢蒂姆.你证实了我的怀疑.问题本身更进了一步.在我的情况下,基类实现了BindingList(T),它自己不实现ISerializable.
在过渡期间,对于每个属性,我将尝试:在ISerializable构造函数base.Property = info.GetValue(...);
并在GetObjectDate info.AddValue("name",base.Property);
除非精彩的SO社区提出更好的解决方案.
如果我在这里工作时连接到本地局域网,我需要让我的应用程序通过内部IP访问我们的服务器,否则,我需要在野外时使用我们的外部IP.
目前,我只是尝试通过本地IP连接然后尝试外部如果它失败...但是超时需要一点时间,我想知道是否有办法在尝试之前找出机器所连接的域.
编辑:帕特里克>基本上,该应用程序运行在一台平板电脑上,每天连接到本地网络几次.它通过网络连接的次数与它本地连接的次数大致相等.
所有机器都有一个域帐户,当他们连接到网络(并具有域帐户与像"LOCTabletx",其中x是当它幻像给予机器数字的命名约定.
我正在寻找的是一种快速查看机器是否在我们的本地网络或互联网上连接的方法.使用Environment.UserDomainName获取LOCTabletx而不是域名.
编辑
如果它可以帮助任何人,我只是尝试DNS解析我可以保证将在网络上的机器的名称(其中一个服务器).它对我来说效果很好.
我有一个字母az的字符[26]和通过嵌套的语句我正在生成一个序列列表,如:
aaa, aaz... aba, abb, abz, ... zzy, zzz.
Run Code Online (Sandbox Code Playgroud)
目前,编写软件是为了从aaa-zzz生成所有可能值的列表,然后维护一个索引,并通过每个索引对它们执行操作.
这个列表显然很大,并不是非常大,但它已经达到了内存占用过大的程度(还有其他方面正在研究,但这是我得到的).
我正在尝试生成一个可以保留索引的公式,但是不要使用序列列表并根据当前索引计算当前序列(因为序列之间的操作之间的时间很长).
例如:
char[] characters = {a, b, c... z};
int currentIndex = 29; // abd
public string CurrentSequence(int currentIndex)
{
int ndx1 = getIndex1(currentIndex); // = 0
int ndx2 = getIndex2(currentIndex); // = 1
int ndx3 = getIndex3(currentIndex); // = 3
return string.Format(
"{0}{1}{2}",
characters[ndx1],
characters[ndx2],
characters[ndx3]); // abd
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用子集(abc)编写一个小例子并尝试使用模数除法进行索引,但是我今天很难思考而且我很难过.
我不是要求答案,只是提供任何帮助.也许正朝着正确的方向发展?
我正在学习f#而且我有一个非常微不足道的问题似乎没有意义.我正在研究Project Euler问题2,我得到了这个:
let fib (x : BigInteger) (y : BigInteger) (max : BigInteger) =
let added = x + y
if added > max then y
else fib y (x + y) max
Run Code Online (Sandbox Code Playgroud)
我在递归的fib调用时遇到错误:
值或构造函数'fib'未定义
而且我不确定为什么.有帮助吗?
我没有其他开发人员可以征求意见或"你觉得怎么样 - 我在想这个 "所以请你,如果你有时间,请阅读并告诉我你的想法.
显示比描述更容易,但应用程序基本上就像一个销售点应用程序,有3个主要部分:Items,OrderItems和Order.
item类是来自数据存储区的数据.
public class Item
: IComparable<OrderItem>, IEquatable<OrderItem>
{
public Int32 ID { get; set; }
public String Description { get; set; }
public decimal Cost { get; set; }
public Item(Int32 id, String description, decimal cost)
{
ID = id;
Description = description;
Cost = cost;
}
// Extraneous Detail Omitted
}
Run Code Online (Sandbox Code Playgroud)
订单商品类是订单上的商品系列.
public class OrderItem
: Item, IBillableItem, IComparable<OrderItem>, IEquatable<OrderItem>
{
// IBillableItem members
public Boolean IsTaxed { get; set; }
public decimal …Run Code Online (Sandbox Code Playgroud) 我有点问题.我正在将我的源代码存储库从一台机器移动到另一台机器,并且在此过程中我正在对存储的内容进行一些剔除,因为自从我开始以来,我已经了解了有关创建/管理存储库的更多信息.
问题是我们正在使用devexpress的dxperience工具,它使用.net许可证系统(licenses.licx).最初我在存储库中有这个许可证,我听说这不一定是最好的主意.所以我没有将它包含在存储库中.但是现在,当我从我的机器上的存储库(在移动之前检查的同一台机器)签出项目时,它正在查找许可证文件而不是生成它(我认为)它应该是.
c# licensing visual-studio-2008 licenses.licx emptylicenseslicx
我想在2个单独的表上进行插入和更新,但是将它们放在1个事务中).
基本上在伪代码中我想做类似的事情:
MySqlTransaction trans = null;
try
{
_Connection.Open();
trans = _Connection.BeginTransaction();
insertCmd.Transaction = trans;
updateCmd.Transaction = trans;
Int32 id = insertCmd.ExecuteNonQuery();
updateCmd.Parameters.Add(new MySqlParameter("oid", MySqlDbType.Int32).Value = id);
updateCmd.ExecuteNonQuery();
}
catch(MySqlException)
{
if(trans != null)
trans.RollBack();
}
finally
{
_Connection.Close();
}
Run Code Online (Sandbox Code Playgroud)
这是可能的还是我以错误的方式解决这个问题?
我一直在阅读,看起来开发结构和生产窗口天蓝云织物之间存在一些差异,但我无处可找到开发结构上的功能列表以及与云结构不比较的内容.
举例来说,如看到这里:
云中的所有Windows Azure环境都是相同的; 测试或临时区域没什么特别之处.但是,本地开发结构和云结构之间存在差异,这就是在云中测试应用程序的重要原因.
(强调我的)
我已经在很多地方看到了对这些差异的暗示,但同样......没有什么可以说有什么不同.
有谁知道描述这些差异的任何资源?