小编Sin*_*tic的帖子

按下按钮创建对象的新实例

看起来它应该足够简单,但我很难将我的大脑缠绕在它周围.通常,您可以通过几种方式之一声明对象

ClassName a;
a = new ClassName();
Run Code Online (Sandbox Code Playgroud)

要么

ClassName a = new ClassName();
Run Code Online (Sandbox Code Playgroud)

等等...

但是因为你在编译时明确地声明了这些,所以当我想要在运行时将其编码时,我会感到困惑.我想要做的是在单击按钮时实例化一个新的Class实例.但是我在这里没有理解的是,如果按钮点击发生这种情况,对象名称将如何被命名?

c# runtime instantiation

3
推荐指数
1
解决办法
3258
查看次数

oracle:COMMENT的oracle等效数据类型是什么?

我应该使用oracle中的数据类型来存储注释框?我打算使用LONG但它只允许一个.或者我应该使用VARCHAR2并将其设置得非常大?

oracle text comments block

3
推荐指数
1
解决办法
4491
查看次数

除非页面至少回发一次,否则FileUpload.PostedFile始终为null?

似乎是一个明显的问题,但我仍然感到困惑.我在页面上有一个asp FileUpload控件,它也恰好位于UpdatePanel中.我将UpdatePanel设置为UpdateMode ="Conditional".我还在触发器部分设置了回发触发器(不是asyncpostback触发器).在按钮单击时,它应该将文件上载到数据库中,在我的数据层中处理.在第一次尝试时,它将失败,因为PostedFile为null,但您看到该页面执行回发(其本身清除/重置下载控件).当我再次尝试上传文件时,它很好.我的第一个想法是因为它需要回发才能真正抓住字节,对吧?好吧,所以根据这个逻辑,我想如果我试图上传一个不同的文件,那么它实际上会上传以前的文件.它没; 它上传了新文件.所以这就是我困惑的地方.

这是上传方法:

protected void ReplaceDoc()
{
    var data = ulReplaceDoc.FileBytes;
    var fileName = ulReplaceDoc.PostedFile.FileName;
    if (MocApi.ReplaceWorkingDocument(_request.MocRequestID, _currentUser, fileName, data))
    {
        //refresh files
        ShowFiles();
    }
}
Run Code Online (Sandbox Code Playgroud)

挺直的.它应该抓取文件,上传它(在数据库上运行UPDATE查询以更改文件),然后刷新数据源以显示新文件.

所以我的问题是:为什么它只在第一次尝试失败?另外,实现这种效果的更好方法是什么?

c# asp.net asynchronous

3
推荐指数
1
解决办法
9757
查看次数

如何在Visual Studio中创建Windows控件库项目?

我试图完成自定义控件的教程,我发现的所有教程都说你必须选择一个名为"windows control library"的项目模板.我没有那个模板作为选项!我正在使用VS2010专业版.有任何想法吗?

templates visual-studio-2010 visual-studio winforms

2
推荐指数
1
解决办法
1万
查看次数

如何使用反射转换为通用接口?

我有一个字典,我正在使用它来促进基于api版本号的内部路由.基本上发生的是我在字典中查找和操作并尝试调用它的RUN方法.但为了做到这一点,我需要能够将对象转换为它的接口.这就是我的意思,这是字典:

    public Dictionary<string, Type> Routing = new Dictionary<string, Type>();

    public VersionRouter()
    {
        Routing.Add("1.0", typeof(OperationV1<RequestObjectV1, ResponseObjectV1>));
        Routing.Add("2.0", typeof(OperationV1<RequestObjectV2, ResponseObjectV1>));
        Routing.Add("3.0", typeof(OperationV1<RequestObjectV2, ResponseObjectV2>));
    }
Run Code Online (Sandbox Code Playgroud)

我可以抓住我想要实例化的正确类型:

var myOperation = Routing["2.0"];
Run Code Online (Sandbox Code Playgroud)

然后在正常情况下,我只是实例化并将其转换为:

var myInstance = (MyInterface) Activator.CreateInstance(myOperation);
Run Code Online (Sandbox Code Playgroud)

但是,接口是通用的,因为它需要知道Request和Response类型是什么:

var myInstance = (MyInterface<TRequest, TResponse>) Activator.CreateInstance(myOperation);
Run Code Online (Sandbox Code Playgroud)

我不知道如何告诉它在这个阶段的请求和响应类型是什么.我假设它可以用反射来完成.我发现我可以通过像myOperation.GetGenericArguments()之类的东西来获取那些通用参数,但是我不知道如何在这个阶段使用它对我有利.有谁知道如何做到这一点?

c# generics reflection

2
推荐指数
2
解决办法
1435
查看次数

如何在MVC 4 Web API中使用HttpResponseMessage对象设置etag?

我在Web API项目中创建了一个辅助类,所以我有点被HttpRequestMessage和HttpResponseMessage所困扰,或者至少看起来如此。我已经生成了要发送回HttpResponseMessage的eTag,但是由于WCF以来我只使用CheckConditionalRetrieve(),因此一切都发生了变化,因此我不确定将其添加到对象中的位置。

我的问题是,我有我的eTag ...大声笑...在哪里使用HttpResponseMessage放置它?

TIA

.net c# asp.net asp.net-mvc-4

2
推荐指数
1
解决办法
1483
查看次数

Thread.CurrentCulture没有保存到实例变量?

在此输入图像描述

正如您所看到的,我尝试将Thread的CurrentCulture捕获到一个实例变量,以便我可以通过类重用它,但它不会持久化.在上面的照片中,我表明即使在分配之后,值仍然不同.为什么是这样?

c# debugging multithreading localization asp.net-mvc-4

2
推荐指数
1
解决办法
72
查看次数

防止异步方法返回,直到完成所有任务

所以我仍然试图理解async/await模式,但我也试图实现以下行为:

方法A调用方法B,该方法B运行许多进程.其中一些进程可以在不同的线程上运行,而其他事情正在处理中,这样它们的返回值将在需要时更接近.在完成所有这些过程之前,方法B不需要将控制权返回给调用者.

这是我正在使用的测试代码:

static void Main(string[] args)
{
    CallProc();
    Console.WriteLine("Program finished");
    Console.ReadKey();
}

public static async Task CallProc()
{
    var two = Task.Factory.StartNew(() => SomeSynchronousProcessIDontOwn(5000, "two"));
    var one = Task.Factory.StartNew(() => SomeSynchronousProcessIDontOwn(500, "one"));
    var three = Task.Factory.StartNew(() => SomeSynchronousProcessIDontOwn(1500, "three"));

    // some process happens here

    var oneMessage = await one; // waits until one finishes and then snags it's value
    Console.WriteLine("Got message {0}", oneMessage);

    // some more stuff happens here

    var twoMessage = await two; // waits until two is …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous async-await

2
推荐指数
2
解决办法
2900
查看次数

尽管签名中有返回类型,为什么此方法会继续返回动态?

因此激活器返回的类型(此处未显示)只是我创建的POCO.没什么特别的.但是尽管如此,返回的返回类型GetWrapperGetWrapper<T>返回的对象是动态类型的,因此intellisense不会看到返回的实际类的属性.有任何想法吗?

在此输入图像描述

更新:对不起,乔恩:

public static T GetWrapper<T>(object type, dynamic obj)
   where T : class, IRedditObject
{
    return GetWrapper(type, obj) as T;
}

public static object GetWrapper(object type, dynamic obj)
{
    return Activator.CreateInstance(Types[type.ToString()], obj);
}

public class LinkWrapper : IRedditObject
{
    private readonly dynamic _link;

    public string Kind { get { return "t3"; } }
    public dynamic Data { get { return _link.data; } }

    public LinkWrapper(dynamic link)
    {
        _link = link;
    }

    public string Domain { get …
Run Code Online (Sandbox Code Playgroud)

.net c# dynamic

2
推荐指数
1
解决办法
317
查看次数

如果聚合根"IN",聚合根如何确保聚合的完整性?

所以我仍然想要达到那个"啊哈!" 聚合和聚合根的时刻(什么是新的,对吧?)我看到Martin Fowler说了以下内容:

聚合将其组件对象之一作为聚合根.来自聚合外部的任何引用都应该只转到聚合根.因此,根可以确保整个聚合体的完整性.

所以我正在读这个,因为聚合是父对象,并且聚合中的一个对象被选为聚合根.此聚合之外的任何内容都只能包含对根的引用.这对我来说很困惑.如果根是聚合的一部分,它如何确保任何东西?

我的理解是聚合的整个目的是:a)充当域对象(值对象和其他聚合)的逻辑分组,b)充当事务边界,所有与聚合的交互必须发生,并且回购只处理聚合.但是说我有这样的聚合:

public class UserInventory
{
        private List<InventoryItem> _inventoryItems;

        // the aggregate root
        public User User { get; }       

        public ReadOnlyCollection<InventoryItem> Inventory => _inventoryItems;

        public UserInventory(User root, IEnumerable<InventoryItem> inventory)
        {
            User = root;
            _inventoryItems = inventory;
        }

        public void UpdateItemDescription(Guid itemId, ItemDescription newDescription)
        {
            _inventoryItems.Single(i => i.Id == itemId).Description = newDescription;
            DomainEvents.Notify(new InventoryItemUpdated(User));
        }
}
Run Code Online (Sandbox Code Playgroud)

现在,我的应用层想要更改特定库存项目的描述,因此,由于它不应该直接与库存项目对话,因此我会公开UpdateItemDescription(Guid, ItemDescription)控制此过程,因为这将是聚合强制执行任何不变量的机会(为了清楚起见我遗漏了

我觉得这是一个很好的聚合示例,但我不明白聚合根在这里如何为"确保完整性"做任何事情.我看过C#DDD示例应用程序,但我找不到任何明显的问题答案,但可以在答案中引用它.

任何人都可以澄清吗?我错过了什么或误解了什么吗?

c# domain-driven-design

2
推荐指数
1
解决办法
497
查看次数