我正在编写一个正在发展并变得非常广泛的Windows Forms应用程序.
最初我认为一个单独的图形组件项目,一个用于业务逻辑,一个用于数据访问,这是最好的方法.
随着应用程序变得越来越大,我开始认为更模块化的方法会更清晰......例如,包含用户控件,业务逻辑和每个"类别"数据的数据访问的项目.
例如......与产品相关的DAL对象以及单个项目中的关联业务对象和用户控件.这应该最终解决方案中的大量项目,每个项目都是自包含的.
然而,这可能会导致更多的复杂性,因为数据经常被链接(产品表与供应商表和订单表和零件清单表等相关联)因此,很难完全抽象每个类别.
在线有数百种软件架构文章,但并不是很多,它们可以帮助您将该架构转换为解决方案,项目和代码.
有人能指出我正确的方向吗?
我正在开发一个Android应用程序,并希望在.apk中捆绑一个视频文件(mp4),这样当应用程序启动时,我可以播放一个简短的介绍视频.
不幸的是,我无法弄清楚我的项目文件夹中应放置此视频文件的位置,以及如何访问它(文件的路径).
我在用 videoView.setVideoPath();
任何帮助将不胜感激.谢谢
我想使用FastScroll作为我的历史列表并使用日期作为部分,但是警告对话框(显示联系人中的字母)不会延伸到适合文本的大小(我希望在月和日显示).
我怎样才能调整它?
我必须创建一个库,用于呈现静态,简单的形状以及一些3D效果,如旋转和斜面.形状可以包含文本或图像.与此类似的东西:

我认为使用GDI +会很难实现,所以是否有任何符合CLS的库可以帮助我进行渲染?
PS我不能使用WPF.
实现类似于Nullable<T>我的结构时,发现PropertyInfo.SetValue对待Nullable类型与其他类型不同.对于Nullable属性,它可以设置基础类型的值
foo.GetType().GetProperty("NullableBool").SetValue(foo, true);
Run Code Online (Sandbox Code Playgroud)
但对于自定义类型,它会抛出
System.ArgumentException:类型为'SomeType'的对象无法转换为NullableCase.CopyOfNullable类型[SomeType]
即使所有转换运算符都与原始运算符一样被覆盖 Nullable<T>
代码重现:
using System;
namespace NullableCase
{
/// <summary>
/// Copy of Nullable from .Net source code
/// without unrelated methodts for brevity
/// </summary>
public struct CopyOfNullable<T> where T : struct
{
private bool hasValue;
internal T value;
public CopyOfNullable(T value)
{
this.value = value;
this.hasValue = true;
}
public bool HasValue
{
get
{
return hasValue;
}
}
public T Value
{
get
{
if (!hasValue) …Run Code Online (Sandbox Code Playgroud) 在我的WEB Api 2控制器中,我想从一个站点请求文件并从我的控制器返回该文件.这是代码
public HttpResponseMessage GetLecture()
{
HttpWebRequest request = WebRequest.CreateHttp("http://openmedia.yale.edu/cgi-bin/open_yale/media_downloader.cgi?file=/courses/spring11/phil181/mp3/phil181_01_011111.mp3");
request.Referer = @"http://oyc.yale.edu/courses/";
var receivedResponse = request.GetResponse();
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(receivedResponse.GetResponseStream());
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(receivedResponse.ContentType);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "phil181_01_011111.mp3";
response.Content.Headers.ContentLength = receivedResponse.ContentLength;
return response;
}
Run Code Online (Sandbox Code Playgroud)
本地它工作正常,我可以下载文件,但当我部署到Azure时,我得到502错误.Web服务器在充当网关或代理服务器时收到无效响应.
记录显示它在返回响应后失败,因此在方法执行期间没有异常.
这是~50MB的文件.对于较小的文件代码工作正常.
如何使此代码在Azure上运行50 MB文件?
假设我Dictionary喜欢这个:
Dictionary<string, string> values = new Dictionary<string, string>()
{
{ "Name" , "John Smith"},
{ "Age", "34"}
};
Run Code Online (Sandbox Code Playgroud)
现在我想从该字典创建类型并在运行时使用值初始化它,以便我能够使用反射访问它的属性.
对于这个例子,我想要属性Name等于"Jon Smith"和Age等于的对象34.
编辑: 我需要这个比较两个对象与语义比较库,如TestApi.由具有强类型的其他代码创建的第一个对象
class Person
{
public string Name {get; set;}
public int Age { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
和其他我需要从其他来源创建像xml文件(但不是必需的).要比较的类型仅在运行时才知道.